tag:blogger.com,1999:blog-69093676584337941962023-11-15T23:27:01.557-08:00Dave Troy: Fueled By RandomnessDave Troyhttp://www.blogger.com/profile/09594731243753943289noreply@blogger.comBlogger26125tag:blogger.com,1999:blog-6909367658433794196.post-39222681673193753352008-05-11T09:32:00.000-07:002008-05-11T09:33:35.079-07:00Blog On the MoveI am in the process of transitioning my blog over to Wordpress at davetroy.com.<br /><br />Please check out <a href="http://davetroy.com">davetroy.com</a> to follow me there!Dave Troyhttp://www.blogger.com/profile/09594731243753943289noreply@blogger.com0tag:blogger.com,1999:blog-6909367658433794196.post-11934554946266788212008-05-06T08:12:00.000-07:002008-05-06T08:13:08.957-07:00SocialDevCamp East: Your To Do ListHey folks,<br /><br />I can't tell you how excited we are about SocialDevCamp East on Saturday. We've heard from so many of you saying that this is exactly the event you wanted, and we have high hopes that we'll have an engaging event that we'll want to repeat in the fall.<br /><br />We've been busy doing all kinds of things in preparation. As this is a user-powered un-conference, here's your to-do list:<br /><br />1) Visit the wiki page at http://barcamp.pbwiki.com/SocialDevCampEast<br /><br />2) Be sure you're signed up as an attendee (or volunteer or sponsor) on the Wiki page (password is c4mp); if you do not list yourself there, there *will not* be enough food for everyone.<br /><br />2) Know where you're going. Study the map and photos on the Wiki page.<br /><br />3) Bug your friends. If there are people who *should* be at this event that are not listed, please reach out to them. We want smart people with interesting perspectives. Be sure they are there.<br /><br />4) If you're not coming, please use Facebook to indicate that now; we need as accurate a picture as possible so we have room for everyone who wants to be there.<br /><br />5) *Think* about the sessions you want to propose and/or lead. Remember, this is an unconference. Everybody should be prepared to lead and share. Lurking is strongly discouraged.<br /><br />6) Be prepared to make a monetary contribution of at least $10-$20 (if you are not already a sponsor). While a contribution is not mandatory, we are over $1000 in the red right now. If everyone pitches in $10-$20, we can cover all of our costs and have some funds to cover some more food and beer at the afterparty.<br /><br />7) Bring your brain. Seriously, don't leave home without it. Everyone is expected to contribute.<br /><br />SDCE will be featured on WYPR 88.1FM Baltimore this afternoon at 5:30pm, on the Digital Café with Mario Armstrong. We'll have some other press at the event as well. This is a great opportunity to showcase all the activity in our region! It's not all about the valley!<br /><br />We are at over 160 people now and this should allow us to have some great conversations.<br /><br />Looking forward to seeing ALL of you on Saturday!<br /><br />Sincerely,<br /><br />Dave, Ann, Keith, and JenniferDave Troyhttp://www.blogger.com/profile/09594731243753943289noreply@blogger.com0tag:blogger.com,1999:blog-6909367658433794196.post-55266891180177235832008-05-01T13:38:00.000-07:002008-05-01T13:48:39.447-07:00Tip: Be with People who Love what You LoveThis morning, I attended another of Jeff Pulver's Social Media Breakfasts.<br /><br />Every time I go, I end up risking a parking ticket. The metered spots are invariably for 2 hours, and 10AM comes almost instantaneously. I can't tear myself away to go mind the meter; been lucky, so far.<br /><br />At these events, I'm continuously engaged with friends new and old; like-minded people who love ideas like I do, and who can bat them around like tennis pros.<br /><br />If you're like me, you find this kind of intense interaction to be exhilarating and stimulating.<br /><br />This is what we want to facilitate at SocialDevCamp East -- a thoughtful conversation about new ideas and how to realize them. We want to discuss the future in an informed way, synthesizing the lessons of the past with today's emerging trends. We want to include economics, psychology, and design in this discussion. And iPhone and Rails and Twitter.<br /><br />Anyway, if this sounds like a conversation you want to have, we guarantee that SocialDevCamp is going to be a blast, and that the day (and the party afterwards) will be a blur. A good blur; a blur you can leverage in the form of new ideas, relationships, and opportunities.<br /><br />We want to thank our two newest sponsors: AwayFind.com and WebConnection.com. Also thanks to David Kirkpatrick, Senior Technology Editor at Fortune magazine, for attending.<br /><br />Looking forward to seeing you and your ideas in Baltimore on May 10th!<br /><br />Sincerely,<br />Dave, Ann, Keith, and JenniferDave Troyhttp://www.blogger.com/profile/09594731243753943289noreply@blogger.com0tag:blogger.com,1999:blog-6909367658433794196.post-22255221429641606152008-04-26T10:31:00.000-07:002008-04-26T10:34:04.953-07:00It's Official: Food is OilI would not have anticipated ever writing anything with this thesis: Fidel Castro was right.<br /><br />A couple of years ago, he made it known that the global subsidy of biofuels would lead to an increase in the price of food because of the diversion of grain stocks (such as corn) into fuel production.<br /><br />It seemed basic economics at the time and he's been proven correct. We saw it in the developed world first in the form of an increase in the price of milk (made from corn, essentially) and subsequently all dairy products.<br /><br />Now we see it in the form of other grains, like rice and wheat, and there is no obvious end in sight. The craze to invest in biofuel technologies was nothing other than a stall tactic, to prevent investment in real alternative energy sources. While it's nice to re-use things like old fry oil to run your Mercedes or semi, there just isn't enough used restaurant oil to make a dent in our demand for energy.<br /><br />Instead we've taken the final step in linking our food supply to the energy market: we've decided to invest heavily (and irrationally) in converting our food directly into energy with ethanol and soy biofuel subsidies.<br /><br />It's not as though there had not previously been a link; oil companies have been powering agribusiness for the last 75 years at least. Petroleum waste products have been productively combined with chlorine and other chemicals to produce a huge number of chemicals that have proved useful as pesticides (and as PCBs, PVCs, and other plastics) and have led to the current abundance of food.<br /><br />Ostensibly, this is a good thing; however as this has occurred, farming has become big business, and the same corporations that control the chemistry of the food supply (like Monsanto and Exxon/Mobil) now control the food supply itself. There's no monopoly like two monopolies.<br /><br />If this theses are correct, one of the best things we can do to lower food prices and to promote investment in sustainable alternative energies is to loudly protest the investment in biofuels.<br /><br />By removing subsidies for biofuels, we 1) direct food back to the food supply, thereby easing prices, 2) promote investment in sustainable alternative energy solutions, 3) agitate the monopoly link between corporate farms and the petroleum products they use, 4) put additional pressure on automakers to seriously consider the development of non-petroleum powered and, certainly, of non-biofuel powered vehicles.<br /><br />So, I exhort you: help stop the subsidy of biofuel production. If there is a natural market for it, it will stand on its own.<br /><br />Otherwise all we're doing is making food less affordable, creating agony for countries that can't afford these price increases, and extending the life of the petroleum monopolies.<br /><br />Certainly new technologies like slow discharge capacitors hold real promise. Let's develop these ideas and show the oil companies that their stranded costs are their responsibility, not ours.Dave Troyhttp://www.blogger.com/profile/09594731243753943289noreply@blogger.com1tag:blogger.com,1999:blog-6909367658433794196.post-21317895244529203722008-04-22T10:35:00.000-07:002008-04-22T10:38:16.135-07:00Building Tech Startups on the East Coast @ SocialDevCamp EastAs we gear up for SocialDevCamp East in Baltimore on May 10, one of the things that we'd like to highlight is the diversity of Web 2.0 talent available here on the east coast.<br /><br />The conventional wisdom today says that to make it as a social startup, you should a) move to San Francisco (preferably East Bay or SOMA), b) meet a bunch of cool people (natch), c) get funded (cake!), d) get featured in TechCrunch, e) build your startup to 500,000 users, f) get snapped up in an early acquisition by Google for $90M, g) repeat.<br /><br />For lots of reasons, the odds of this working are low and getting lower. Why? For one, this is the conventional wisdom; everybody's doing it, why shouldn't you? Loads of ditto-heads are creating a glut of ideas. They all can't win.<br /><br />Second, VC investments are often a trailing indicator of successful business sectors. VCs follow what has worked previously, which leads to persistent failures at the end of a business cycle. Why else do you think they need to rely on outrageous 100x returns? To make up for their last round of losses.<br /><br />Why do you live where you do? Family, a partner, school, friends, or do you simply love where you live? There are countless talented people who have made the same choice as you, and they've made this choice not as a runner-up to a life of glory in the Bay area. They've made the choice as a matter of personal identity and conviction.<br /><br />As I meet members of the tech business community along the east coast, I hear two things consistently. One, that the Bay area is getting weird these days, and that they are "all smoking the same air." Second, that the "VC community doesn't get it here," and that it's hard to get funding and launch a web-based startup on the east coast.<br /><br />Sorry, but we can't have it both ways. We must choose: do you want to live in the Bay Area and sustain the vagaries of that echo-chamber culture, or do you want to grow where you're planted and build viable businesses here?<br /><br />The fact is that we can't expect to improve the tech startup climate on the east coast if we don't come together and make it what we want it to be. And that means we need to stop looking over our shoulder at the west coast and start building businesses here and now, using telework, co-work, or traditional workspaces.<br /><br />The <a href="http://www.37signals.com/svn/posts/987-are-you-sure-you-want-to-be-in-san-francisco">37signals blog</a> covered this topic today, and reflected many of my opinions on the subject.<br /><br /><br />This is part of what we want to address at SocialDevCamp East. If we want to have a thriving startup culture here, we need to build it -- one relationship at a time.Dave Troyhttp://www.blogger.com/profile/09594731243753943289noreply@blogger.com5tag:blogger.com,1999:blog-6909367658433794196.post-61398324966138832682008-04-14T14:20:00.000-07:002008-04-14T14:24:52.593-07:00Being an iPhone Developer Has Its Privileges<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_0S2YRe2i2opou4hVbiRfjlLIWWUEs8yZaTwIKU0t4Gyn_PA7yQKhQEjXU18d1f4-NNsHxOQC8OKoTnk2NmvxE6rklxfy583XAQ7tHNGSxG8CKaYf8Nx8wAjOqTI4ySGiKHbBwX49D4k/s1600-h/Picture+13.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_0S2YRe2i2opou4hVbiRfjlLIWWUEs8yZaTwIKU0t4Gyn_PA7yQKhQEjXU18d1f4-NNsHxOQC8OKoTnk2NmvxE6rklxfy583XAQ7tHNGSxG8CKaYf8Nx8wAjOqTI4ySGiKHbBwX49D4k/s320/Picture+13.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5189214035510009186" /></a><br /><br />It means you get to pay $99 (plus sales tax). Hopefully in a few minutes I'll have a certificate to test apps on my iPhone!<br /><br />See you at <a href="http://barcamp.pbwiki.com/iPhoneDevCampNYC">iPhoneDevCamp</a> in New York this weekend?<br /><br />We'll be sure to have iPhone topics at <a href="http://barcamp.pbwiki.com/SocialDevCampEast">SocialDevCamp East</a> on May 10!Dave Troyhttp://www.blogger.com/profile/09594731243753943289noreply@blogger.com0tag:blogger.com,1999:blog-6909367658433794196.post-18314840594494045442008-04-14T06:28:00.000-07:002008-04-14T07:26:53.343-07:00SocialDevCamp East, May 10 in Baltimore<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://barcamp.pbwiki.com/SocialDevCampEast"><img style="text-align: left;display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; cursor: pointer; " src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQpu8sZDbivuwRCKQIxcY7fdMbDR1uhtjey7GLjpr2bAExHXbHsQvplxnuh6yk9chI0hsbWl2ccob7IvakUW9WQK09QpGyjj_9SqG1bsOAKtYNZ6oN1BN8nQJzLh5F9G6bK6a2AvSVnNk/s320/socialdevcamp.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5189106927615581522" /></a><br /><br />The last few weeks have been really busy. So much has been going on I haven't had time to blog.<br /><br />Since last time, I've launched a new company called Roundhouse Technologies and helped to organize an unconference here in Baltimore called SocialDevCamp East.<br /><br />I'll be talking about Roundhouse Technologies in more detail in the coming weeks. In the meantime, it's important to get the word out about SocialDevCamp, as it's coming up fast -- on May 10.<br /><br />SocialDevCamp will be held in Baltimore and is an unconference focused on the future of the social web. We're looking for developers and thought leaders who are interested in imagining the <b>future</b> of the web, not just where it is today.<br /><br />While "monetizing Facebook applications" might have been a good topic for six months ago, we're after a little deeper reflection than that. What are the long term implications of platforms like Facebook? What effect will Google's Application Engine have on creativity? What direction is the ideation, funding, and liquidity process going in? Do we need to create new paths to liquidity, as <a href="http://avc.blogs.com/a_vc/2008/04/we-need-a-new-p.html" target="new">some have suggested</a>?<br /><br />SocialDevCamp is an unconference, so the agenda is not cast in stone; we'll form the agenda based on the interests of the attendees. It's also free to participants. Our costs will be covered by some sponsors; we need sponsors. My new company is one, but we could use more. Please email me at dave at roundhousetech dot com.<br /><br />Why is SocialDevCamp East in Baltimore? It's central to DC, Philly and pretty accessible to NY and Boston. Our hope is to draw deep thinkers from each of these markets. This kind of conversation is happening much more frequently on the west coast, but as a friend of mine recently said with tongue firmly in cheek, "the people in San Francisco are all smoking the same air." There's something to that. We have an opportunity to have a thoughtful, realistic conversation that's influenced by reflection and not so much by what might be happening on Sand Hill Road.<br /><br />We expect to have about 100 people. Please spread the word. We're planning to have four separate break out session periods, plus lunch and an after party. We hope you can make it to what should be a great event!<br /><br />Sign up to attend with the <a href="http://www.facebook.com/event.php?eid=11765408162" target="new">event page on Facebook</a> and the <a href="http://barcamp.pbwiki.com/SocialDevCampEast" target="new">Barcamp PBWiki event page</a>.<br /><br />And if you know someone who would be a great fit for the event, please pass on the word. We're really looking forward to meeting all of the fantastic thinkers in our midst here on the east coast.<br /><br />And yes, the venue has not yet been confirmed, but we're working that now. We'll update as soon as we have more specific details.Dave Troyhttp://www.blogger.com/profile/09594731243753943289noreply@blogger.com2tag:blogger.com,1999:blog-6909367658433794196.post-81735551051333883022008-02-29T08:08:00.000-08:002008-02-29T09:36:01.509-08:00The Connections Episode: Pulver TV, The Tech Tax, Berlin!This was another action-packed week for me which I'm just recovering from now.<br /><br />On Tuesday, I headed up to New York to be a part of another of Jeff Pulver's social media breakfasts. This one was at Friend of a Farmer (Gramercy Park area) and featured about 100 of New York's most active social networkers. I had a great time and met a ton of people, some of whom could become potential collaborators.<br /><br />Jeff's onto something with these breakfasts. It's not rocket science -- it's getting people together who are preselected via a common medium -- but his belief in turning online connections into real human connections is powerful, and it will be the basis of much of how we all do business in the future. The world is re-sorting itself. More on that in a minute.<br /><br />After the breakfast I headed over to Jeff's offices in Melville, NY to be on Jeff's online TV program, <a href="http://pulver.tv">Pulver.TV</A>. I was a featured guest, as was Ann Bernard from <a href="http://whygosolo.com">whygosolo.com</a>, a new social networking service (and Facebook app) that "makes spontaneous connections happen". More on that in a minute too.<br /><br /><p>Interview with Dave Troy:<br /><br /><embed width="400" height="336" src="http://www.blogtv.com/vb/YeTrZmPxY27" type="application/x-shockwave-flash" allowFullScreen="true"></embed></p><br /><br /><p>Interview with Ann Bernard:<br /><br /><embed width="400" height="336" src="http://www.blogtv.com/vb/YeTrZmPxY2Z" type="application/x-shockwave-flash" allowFullScreen="true"></embed></p><br /><br />On Wednesday, I made an important appearance in Annapolis, Maryland at <b>Save Maryland IT Day</b>. For those of you reading this from outside Maryland (I dare say most of you), our state legislature, in its infinite wisdom, has passed a law that imposes a 6% sales tax on all "computer services" -- whatever that means. Anyway, it applies to me and what I do and I have been part of a team of technology business leaders fighting this law. There are several bills pending that would repeal this tax, but it won't be easy to do. We need to get the word out about this to everybody in Maryland. This tax is bad, bad, bad! Learn more at the website for the <a href="http://mdneedsit.org">Maryland Computer Services Association</a>.<br /><br />I developed a tool to help fight this tax: <a href="http://marylandneedsit.org/cando/call.aspx">Call your legislator for free</a> and express your opposition to the tax.<br /><br /><object type="application/x-shockwave-flash" data="http://blip.tv/scripts/flash/showplayer.swf?enablejs=true&feedurl=http%3A%2F%2Fmarylandneedsit%2Eblip%2Etv%2Frss&file=http%3A%2F%2Fblip%2Etv%2Frss%2Fflash%2F707884&showplayerpath=http%3A%2F%2Fblip%2Etv%2Fscripts%2Fflash%2Fshowplayer%2Eswf" width="400" height="255" allowfullscreen="true" id="showplayer"><param name="movie" value="http://blip.tv/scripts/flash/showplayer.swf?enablejs=true&feedurl=http%3A%2F%2Fmarylandneedsit%2Eblip%2Etv%2Frss&file=http%3A%2F%2Fblip%2Etv%2Frss%2Fflash%2F707884&showplayerpath=http%3A%2F%2Fblip%2Etv%2Fscripts%2Fflash%2Fshowplayer%2Eswf" /><param name="quality" value="best" /><embed src="http://blip.tv/scripts/flash/showplayer.swf?enablejs=true&feedurl=http%3A%2F%2Fmarylandneedsit%2Eblip%2Etv%2Frss&file=http%3A%2F%2Fblip%2Etv%2Frss%2Fflash%2F707884&showplayerpath=http%3A%2F%2Fblip%2Etv%2Fscripts%2Fflash%2Fshowplayer%2Eswf" quality="best" width="400" height="255" name="showplayer" type="application/x-shockwave-flash"></embed></object><br /><br /><b>The World is Re-Sorting Itself</b><br />I'm active in my local technology business community. I think that's all part of good citizenship, and it's good business and common sense to connect with people who are close-by and like-minded.<br /><br />But things are changing. The two local technology councils, and the economic development agencies who help to fund them, are primarily geared towards old-school, big-iron economic development. Convince a big company to put a corporate headquarters in your state (or county) and you've got a lot of jobs, tax base, and capital investment for years to come. This is not a criticism; this is naturally what they would want to encourage and it's great as far as it goes.<br /><br /><b>But that world is slipping away.</b> Today, geography is no longer a primary concern for companies. Small, focused companies can be virtual, or distributed, and this is more functional than it's ever been. I am struck that Maryland wants to push its technology activities outside its borders.<br /><br />Meanwhile, I am meeting my most valuable collaborators in places like New York, London, or Berlin, and finding that they live all over the world. I am more likely to start a company with people from six states and three countries than I am to start one entirely headquartered in Maryland.<br /><br /><b>Collaboration of subject-matter experts is what drives excellence in business</b> and we are no longer likely to be able to convince these experts to co-locate near each other for years at a time. People choose where to live for a host of reasons that, ideally, should and can be disconnected from their professions.<br /><br />Social networking tools now make it possible for us to locate and stay connected to our peers wherever they may be.<br /><br />Likewise, Ann Bernard's brilliant <a href="http://whygosolo.com">WhyGoSolo</a> concept helps connect people in an orderly way to share experiences. It's not a dating site; I described it as kind of like <a href="http://couchsurfing.com">couchsurfing.com</a>, only standing up. Meet new people, experience new things, grow your network, push your mind. A lot of people gravitate towards the more libidinous aspects of ideas like this, and hey, what happens between consenting adults is their business.<br /><br />But again, that's not the point. We've only got about 80 years on the ship here, and life's too short not to use every last minute to its fullest. To the extent that social networking can help us make new connections -- both business and personal -- shouldn't we milk it for everything it's worth?<br /><br />All these concepts -- Jeff's breakfasts, WhyGoSolo, couchsurfing.com -- help us make connections and maximize our life ROI.<br /><br /><b>Noel Hidalgo's Trip Around the World: CoWorking</b><br />As an experiment, I spent summer 2007 living in Berlin with my family. I got to know several ex-pats who were living there, or just passing through.<br /><br />Coincidentally, I met up with Noel Hidalgo, whose "Luck of Seven" project was taking him on a trip around the world. Here's video I just found on blip.tv of my interview with Noel in Berlin in July 2007.<br /><br /><object type="application/x-shockwave-flash" data="http://blip.tv/scripts/flash/showplayer.swf?enablejs=true&feedurl=http%3A%2F%2Fluckofseven%2Eblip%2Etv%2Frss&file=http%3A%2F%2Fblip%2Etv%2Frss%2Fflash%2F317558&showplayerpath=http%3A%2F%2Fblip%2Etv%2Fscripts%2Fflash%2Fshowplayer%2Eswf" width="400" height="255" allowfullscreen="true" id="showplayer"><param name="movie" value="http://blip.tv/scripts/flash/showplayer.swf?enablejs=true&feedurl=http%3A%2F%2Fluckofseven%2Eblip%2Etv%2Frss&file=http%3A%2F%2Fblip%2Etv%2Frss%2Fflash%2F317558&showplayerpath=http%3A%2F%2Fblip%2Etv%2Fscripts%2Fflash%2Fshowplayer%2Eswf" /><param name="quality" value="best" /><embed src="http://blip.tv/scripts/flash/showplayer.swf?enablejs=true&feedurl=http%3A%2F%2Fluckofseven%2Eblip%2Etv%2Frss&file=http%3A%2F%2Fblip%2Etv%2Frss%2Fflash%2F317558&showplayerpath=http%3A%2F%2Fblip%2Etv%2Fscripts%2Fflash%2Fshowplayer%2Eswf" quality="best" width="400" height="255" name="showplayer" type="application/x-shockwave-flash"></embed></object><br /><br />Noel did a <b>beautiful</b> job editing this video. The kid with the accordion, the windmills, the street scenes -- he captured the zeitgeist of Berlin, summer 2007 perfectly.<br /><br />Also with us that day was my friend <a href="http://growvotes.org">Travis Todd</a>, who coincidentally (and completely unbeknownst to me before meeting him there that day) is from Annapolis, Maryland and was a customer of mine years ago when I owned an ISP. And his little brother went to pre-school with my son.<br /><br />See, Maryland? We don't need you. Tax us and we'll move to Berlin.Dave Troyhttp://www.blogger.com/profile/09594731243753943289noreply@blogger.com1tag:blogger.com,1999:blog-6909367658433794196.post-89034260206910955732008-02-22T12:45:00.000-08:002008-02-23T11:10:08.198-08:00Design and the Elastic Mind: Opening NightOn Tuesday, I attended the press preview and opening night events for Design and the Elastic Mind at the MoMA in NYC. It opens to the public Sunday, February 24th and includes works from designers, scientists, digital artists and thinkers from across a wide range of disciplines; my projects Twittervision and Flickrvision are featured.<br /><br />I strongly recommend that you check out this exhibition, especially if you're interested in the intersection between science, design, and art. There are some stunningly beautiful and provocative pieces. While the core ideas behind many of the pieces are technical -- computation, informatics, bioscience -- good design is required to make the information presentable and understandable to a broader audience. Paola Antonelli, curator for Architecture and Design at the MoMA, has done a remarkable job of assembling these pieces.<br /><br />Here are some photos from the party Tuesday night.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhw5y0veA7LFBWJXEmSCiYbak3NSwYAL-soJ5Q-5dTWxopqw8KJyqtHq8H0Te6kkMXvUNbmXYkeVE2BCgrLojqs9_NLEakLeHStubQ9KhyphenhyphencW6RFXyd59XHfptpVBIE_rX-gv6NyOeMKPwA/s1600-h/IMG_0051.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhw5y0veA7LFBWJXEmSCiYbak3NSwYAL-soJ5Q-5dTWxopqw8KJyqtHq8H0Te6kkMXvUNbmXYkeVE2BCgrLojqs9_NLEakLeHStubQ9KhyphenhyphencW6RFXyd59XHfptpVBIE_rX-gv6NyOeMKPwA/s320/IMG_0051.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5169913399170517762" /></a><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiP0XUdDcWJICU6YBNWm6tYP7ILMtq61QzVpARfgITAvwgJq20_PGYcaAI4Z19q58oY9KhEoHa6PXX-TLSZI1CqLlOTJ8xEd3y_LtAIs8wymc9_iv7Bb3jVk3A635Xr3U1j5wa3CXNF2-c/s1600-h/IMG_0017.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiP0XUdDcWJICU6YBNWm6tYP7ILMtq61QzVpARfgITAvwgJq20_PGYcaAI4Z19q58oY9KhEoHa6PXX-TLSZI1CqLlOTJ8xEd3y_LtAIs8wymc9_iv7Bb3jVk3A635Xr3U1j5wa3CXNF2-c/s320/IMG_0017.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5169909632484199154" /></a><br /><br />Large scale, open-source Graffiti Projection System from <A HREF="http://graffitiresearchlab.com/" target="new">Graffiti Research Lab</A>. I need to build one of these. The graffiti is "painted" where the green laser hits. Note that the paint drips "up" in this photo. You can do that with digital paint!<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRRxQ7O2zq6FRZ4T689yZ_pTkw81fLczeHt5pkjJcZ14rDw2eULAnkojnyLZJhMhd63WD2Y7R_hxO2ce61q48Rax-zie9WrxQWec-Fae7Pghohiu13qxlJ23KGB_MoVeX9em0GzhzAoKw/s1600-h/IMG_0200.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRRxQ7O2zq6FRZ4T689yZ_pTkw81fLczeHt5pkjJcZ14rDw2eULAnkojnyLZJhMhd63WD2Y7R_hxO2ce61q48Rax-zie9WrxQWec-Fae7Pghohiu13qxlJ23KGB_MoVeX9em0GzhzAoKw/s320/IMG_0200.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5169914614646262562" /></a><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiT32K4J9slUl9u6vKRe40gL5O73GDr9U3Hh2HLYuRCoWxZ72kq_UxCnFnXhAP8IrLUfCoZih5Syn9vfqJ3oiWIlfkLXVjqZJYs_-TVyYP08TvaPP1N3lS_3ngWdLLpxIIpgSsMYAXW9XU/s1600-h/IMG_0020.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiT32K4J9slUl9u6vKRe40gL5O73GDr9U3Hh2HLYuRCoWxZ72kq_UxCnFnXhAP8IrLUfCoZih5Syn9vfqJ3oiWIlfkLXVjqZJYs_-TVyYP08TvaPP1N3lS_3ngWdLLpxIIpgSsMYAXW9XU/s320/IMG_0020.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5169914240984107794" /></a><br /><br />This still seems improbable.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEZlW8n0HhJOyPX1Na57zrFRkZL1KKreC1B3190M-D2rPriSLQCeDDXYXYbLSQQQPBG5TJeMEKaMNn_VVORRkJouAelF1jITm5JL6VJD41gbTfVXCLrFk1_zlAXiYAwHb2gmwQ67JDTT0/s1600-h/IMG_0179.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEZlW8n0HhJOyPX1Na57zrFRkZL1KKreC1B3190M-D2rPriSLQCeDDXYXYbLSQQQPBG5TJeMEKaMNn_VVORRkJouAelF1jITm5JL6VJD41gbTfVXCLrFk1_zlAXiYAwHb2gmwQ67JDTT0/s320/IMG_0179.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5169916916748733234" /></a><br />Sofia Lagerkvist (right) w/partner from Front Design. Creators of the remarkable "Sketch Furniture", which can be drawn freehand in 3-space, then rendered in plastic using a laser-based process. Insane. Create your own furniture that looks like it's straight out of a cartoon!<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEVH2jhkKTSshqgPYk_cFEOrkkgrJWB4usECO1yioJRl9A2uog8qjq3pA62eHKZSaUZl0fUpGcNQ20-nktIF_W_-oaaQt4yNX_U14AWCozc7zVLAfbno4YW_ur1jfeBvD7EN8v7yBAuQk/s1600-h/IMG_0033.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEVH2jhkKTSshqgPYk_cFEOrkkgrJWB4usECO1yioJRl9A2uog8qjq3pA62eHKZSaUZl0fUpGcNQ20-nktIF_W_-oaaQt4yNX_U14AWCozc7zVLAfbno4YW_ur1jfeBvD7EN8v7yBAuQk/s320/IMG_0033.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5169926726454037442" /></a><br />This is an example of an object created with the Sketch Furniture process.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDd_mcw9Sq0UKRRY35qGST-YvxL-UD7GMHu799YciwgKFYfuulebJM546SKTbCqOVzpEFRrBZ45R8X8Fs7e4EJKtUlUx89Qlj1MlNwft0mYgtGFbYjhONSrZS461L3DNcAhyYS4R33Ws8/s1600-h/IMG_0058.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDd_mcw9Sq0UKRRY35qGST-YvxL-UD7GMHu799YciwgKFYfuulebJM546SKTbCqOVzpEFRrBZ45R8X8Fs7e4EJKtUlUx89Qlj1MlNwft0mYgtGFbYjhONSrZS461L3DNcAhyYS4R33Ws8/s320/IMG_0058.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5169920301182962498" /></a><br /><br />The Painstation video game; where the punishment for losing is actual pain, inflicted by a table-mounted wristband!<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKbzq7XmugA4oWeJQambN_yXKUw6XZhPtKFuFwn0r7kcgv_frW5AuRguhyKj2LEnPddR1T4R1rGHaGadCitTowPVpukk4ffsXrjZwbgRylDipvz1hLFkq_EFL45uTLWq9gx0D3BZLIOG4/s1600-h/IMG_0196.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKbzq7XmugA4oWeJQambN_yXKUw6XZhPtKFuFwn0r7kcgv_frW5AuRguhyKj2LEnPddR1T4R1rGHaGadCitTowPVpukk4ffsXrjZwbgRylDipvz1hLFkq_EFL45uTLWq9gx0D3BZLIOG4/s320/IMG_0196.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5169921593968118626" /></a><br /><br />Adam Putter and Janis Mussat. Their project Beerfinder.ca helps beer drinkers in Toronto coordinate beer runs, navigating complex store-closing hours!<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtQ4r7kmMM6oFE0V57MWKCLr6nHrKdg41L5RskACZ6GC8OreqNPKFzYXnOQcbVZal2t9eeNtmk_1o4ZQsxP1BwgEXnlfRaL4MURSLAtvl4Q6ucyzfuYogGqILuBN3wpmRXBLcBB1NSJzQ/s1600-h/IMG_0174.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtQ4r7kmMM6oFE0V57MWKCLr6nHrKdg41L5RskACZ6GC8OreqNPKFzYXnOQcbVZal2t9eeNtmk_1o4ZQsxP1BwgEXnlfRaL4MURSLAtvl4Q6ucyzfuYogGqILuBN3wpmRXBLcBB1NSJzQ/s320/IMG_0174.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5169922538860923762" /></a><br />No contemporary design exhibit is complete without the OLPC!<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5HQnQL_PM2bxwcYZ_1ZC2lU-5sTMWUHmXpcpfzaB79wUaLIYj0zU1bI3r5raxAkE8gUy5yeDl_Fll4ayHSPazGbCux9m5Mkf_Z1CTCSBICa8FZm2ZWCH9qwItK9UfL2NaFDgyLjNtCEQ/s1600-h/IMG_0054.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5HQnQL_PM2bxwcYZ_1ZC2lU-5sTMWUHmXpcpfzaB79wUaLIYj0zU1bI3r5raxAkE8gUy5yeDl_Fll4ayHSPazGbCux9m5Mkf_Z1CTCSBICa8FZm2ZWCH9qwItK9UfL2NaFDgyLjNtCEQ/s320/IMG_0054.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5169922822328765314" /></a><br />Me and Paola Antonelli, MoMA Curator of Design & Architecture.<br />She curated Design and the Elastic Mind.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqn7TdmdjLHIy5UcQY9pN1gmPU1tRYNKt9ssOInEurXLwx_ma5hSJ9iowfkMIeXsoWvuvH6Lw4LhGOHNY9pBleKdpLL8NSwkBK4FTIQOcCssh65gtVpn5OiAJcN7OXWeAV1fohuOTiTus/s1600-h/IMG_0193.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqn7TdmdjLHIy5UcQY9pN1gmPU1tRYNKt9ssOInEurXLwx_ma5hSJ9iowfkMIeXsoWvuvH6Lw4LhGOHNY9pBleKdpLL8NSwkBK4FTIQOcCssh65gtVpn5OiAJcN7OXWeAV1fohuOTiTus/s320/IMG_0193.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5169923384969481106" /></a><br />My favorite installation in the show, Shadow Monsters by Philip Worthington. Transforms people into amazing sights and sounds. You need to see this.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMOJ30D6a_tFewAIPAOpGaBRk4v5oHpiuRI22vZrAXaLAzscrCo-7LFqy7DZ2URCSrnZ7JSE6tgSFhXdeYwvEAayBVviFCHRnpMfh5udwo_e5CJt1UYdFt5NjPwsC_7aQM8zCNFCG1GOM/s1600-h/IMG_0169.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMOJ30D6a_tFewAIPAOpGaBRk4v5oHpiuRI22vZrAXaLAzscrCo-7LFqy7DZ2URCSrnZ7JSE6tgSFhXdeYwvEAayBVviFCHRnpMfh5udwo_e5CJt1UYdFt5NjPwsC_7aQM8zCNFCG1GOM/s320/IMG_0169.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5169923969085033378" /></a><br />Me and Ian Spiro of <A HREF="http://fastfoodmaps.com">fastfoodmaps.com</A>, a Google maps project that shows the fast-food restaurants in the United States. He wishes he had more time to devote to this. He thinks Arby's is retreating, but he wants to <i>prove</i> it!<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXi5ofIpiDw2s9BZ-fTzAKhKwg0RMg-Qf-f5Gpp3VrPa9mF1RhKzED6GhqaBdCm5ok5JiqMpAoaGRKzsKxAbjiGYEFh54bHcjsi3I5HZ5GnEkyqpMsLavpWrRzgaH4l0jzr-X-TjkNusQ/s1600-h/IMG_0172.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXi5ofIpiDw2s9BZ-fTzAKhKwg0RMg-Qf-f5Gpp3VrPa9mF1RhKzED6GhqaBdCm5ok5JiqMpAoaGRKzsKxAbjiGYEFh54bHcjsi3I5HZ5GnEkyqpMsLavpWrRzgaH4l0jzr-X-TjkNusQ/s320/IMG_0172.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5169925888935414706" /></a><br />"I Want You to Want Me" is a project by Jonathan Harris and Sep Kamvar, of <A HREF="http://wefeelfine.org">wefeelfine.org</A> fame. This project scrapes data from online dating sites and attempts to make sense of it. It uses a giant touch screen and is visually quite impressive.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEie8SZBrePk-A9noUGzldD-fB0_SdGXYDZu2wZ1LJrI2EJwhwG39KPJ3S6JC-TCd65SZrZVSBLahOTG5DlJQ4EHIilTvXZMP3fzZXDnoBVOvR9OwAplWRmtPkYcZ6prMsa4-ohvcYNneKA/s1600-h/IMG_0195.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEie8SZBrePk-A9noUGzldD-fB0_SdGXYDZu2wZ1LJrI2EJwhwG39KPJ3S6JC-TCd65SZrZVSBLahOTG5DlJQ4EHIilTvXZMP3fzZXDnoBVOvR9OwAplWRmtPkYcZ6prMsa4-ohvcYNneKA/s320/IMG_0195.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5169927581152529362" /></a><br />A giant, pulsating 15' tall "tree" made from what appear to be clear-coated fiberoptic strands. Really, really impressive piece of work. It is the "Sonumbra" by Rachel Wingfield and Mathias Gmachl.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKWXmta9uz2G0dBDC7lkzyZblGPEnKFVT0-7kq1avjH4LsHxhQVFXIuljccy2pfeNvQbsm8EgbhKqOhZeFEP80CjqY4CJTxx_ahU3mktYag1R-RziU_0zvrbz03fqjMApLVnO8hEdfpUQ/s1600-h/IMG_0208.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKWXmta9uz2G0dBDC7lkzyZblGPEnKFVT0-7kq1avjH4LsHxhQVFXIuljccy2pfeNvQbsm8EgbhKqOhZeFEP80CjqY4CJTxx_ahU3mktYag1R-RziU_0zvrbz03fqjMApLVnO8hEdfpUQ/s320/IMG_0208.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5169929226125003746" /></a><br />Me and Noelle Steber of the Google Moon project. Noelle was responsible for assembling the Apollo data and is a student at MIT.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-GWSaiQtHkGr5ggFJMhjrgAsEbhN3HXc3VlqtOdbjc8PHX9EPFli-_NBxkYonSrS8NVObZhzqUDyihu7OL12qXgytRdgDd9dMyY0S9BYjyb-jDPEKi9u6Q3VFn9mwkjutLpWwZUG7fLo/s1600-h/IMG_0057.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-GWSaiQtHkGr5ggFJMhjrgAsEbhN3HXc3VlqtOdbjc8PHX9EPFli-_NBxkYonSrS8NVObZhzqUDyihu7OL12qXgytRdgDd9dMyY0S9BYjyb-jDPEKi9u6Q3VFn9mwkjutLpWwZUG7fLo/s320/IMG_0057.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5169929883255000050" /></a><br />My wife Jennifer, showing off the digitally projected "Lightweeds" by Simon Heijdens.<br /><br /> <br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4SqrJZJjZG75wHuNyNfl8CGu2-jWKTDC-vMKOn8lH12k4JdLQ5LFqj_5gV0F9MemYXRTK_hvezBp4ftjF4Ur_0sBWtDqTDwmo4dAKmPMb6CnFW50RRPDFfHj3PKUJG5LbjBPxx7mg_LM/s1600-h/IMG_0026.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4SqrJZJjZG75wHuNyNfl8CGu2-jWKTDC-vMKOn8lH12k4JdLQ5LFqj_5gV0F9MemYXRTK_hvezBp4ftjF4Ur_0sBWtDqTDwmo4dAKmPMb6CnFW50RRPDFfHj3PKUJG5LbjBPxx7mg_LM/s320/IMG_0026.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5169930858212576258" /></a><br />My other project, <A HREF=http://flickrvision.com>Flickrvision</A><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgenySBB8b1QHH_OORGBj5Wr9EWspLfZyp907JHweOzOfKyScrXyqD3OBiB-lT-DF__72WyqaA5aMzDCE0Zx6Z9UwFlUDWlsHyU0wBTCWmNtmjgK2y0UHxxEGGZwVY_1-wC_HRi2FiuZbo/s1600-h/IMG_0203.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgenySBB8b1QHH_OORGBj5Wr9EWspLfZyp907JHweOzOfKyScrXyqD3OBiB-lT-DF__72WyqaA5aMzDCE0Zx6Z9UwFlUDWlsHyU0wBTCWmNtmjgK2y0UHxxEGGZwVY_1-wC_HRi2FiuZbo/s320/IMG_0203.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5169931442328128530" /></a><br />All in all, a successful evening. Design and the Elastic Mind will run through May 12, 2008! I hope you get a chance to see this exhibit in person!Dave Troyhttp://www.blogger.com/profile/09594731243753943289noreply@blogger.com1tag:blogger.com,1999:blog-6909367658433794196.post-25683743846747717002008-02-18T10:21:00.000-08:002008-02-18T10:53:26.357-08:00The Mashup Is DeadToday I want to rant about a few things I hate. They include:<ul><br /><li>The Word "Mashup"<br /><li>Proclamations of the form: "A Thing is Dead; Long Live that Thing"<br /><li>People Who Insist on Continuing to Use the Word Mashup<br /><li>The Term "Web 2.0"<br /></ul><br />I know it's heresy. Mashups and Web 2.0 are what's hot, right? I myself am considered to be a "mashup creator" working with Web 2.0 concepts.<br /><br />But that era is behind us. The term "Mashup" made sense when coders were actually lifting data from places it was hard to lift from and putting it into contexts that were hard to access. This, my friends, is no longer the state of affairs on the Internet.<br /><br />Today, we are working with a world of data that wants to be free and is published via countless, well documented API's. In the cases where API's are still not available (or whorishly published in hopes of becoming universally adopted), advanced tools and protocols are available to automate what used to be hard.<br /><br />We must remember that the word "mashup" hails back to music, originally; a talented music editor might string together pieces of previously recorded music to create something new. This was an artform in itself, and implied a kind of subversion. A repurposing of content, often done without the permission or knowledge of the original creator.<br /><br />Well, the days of this kind of thing on the Internet are, thanks to everybody's efforts to open things up, largely over. In a world where open source software is widely accepted, where it makes sense for companies like Facebook, Google, Yahoo, Twitter, Amazon (and gee, every other damn company out there) to publish API's that encourage their data to be woven into the fabric of the net, there is no need for the coy sense of subversion that comes from the word "Mashup."<br /><br />What we've got now, folks, is DATA! Great flowing rivers of it! Software that helps us use it! Ruby on Rails, Asterisk, MySQL, PGSQL, Apache, Freeswitch, Flex! Where it's not open source, it's at least free! Everything has an API and the things that don't are falling away.<br /><br />The next person that says to me with a straight face that they "make mashups" is going to get sucker-punched. The word has lost its meaning, so let's move on.<br /><br />That said, explaining to a layperson what it is we "creative coders" do, sometimes you, well, have to resort to saying, "I make mashups." But do us all a favor, try to explain what that really means today. Let's move to a world where we can think about data, about tools (which is really just code-as-data), and imagining what we can do with it all.<br /><br />Mashup was a good word for perhaps 2003-2007, but it implies limitations and barriers that simply no longer exist. We can do better.<br /><br />What would YOU call the innovations that are possible with all the data and tools we have today?Dave Troyhttp://www.blogger.com/profile/09594731243753943289noreply@blogger.com7tag:blogger.com,1999:blog-6909367658433794196.post-44616805503074142322008-02-17T07:17:00.000-08:002008-02-22T14:41:01.257-08:00Upcoming Events for Dave Troy...Well folks, it's shaping up to be a busy few weeks!<br /><br />This week, my projects <A HREF="http://twittervision.com">Twittervision</A> and <A HREF="http://flickrvision.com">Flickrvision</A> will be opening at the Museum of Modern Art in New York, in an exhibit called <A HREF="http://12.172.4.131/exhibitions/exhibitions.php?id=5632&ref=calendar">Design and the Elastic Mind</A>. A press preview will be held on Tuesday morning at 10AM, and opening night will be at 6:30 or something that day. It's pretty exciting; I never suspected my locking myself in a room and coding would lead to this sort of thing! The exhibit is open to the general public Feb 24-May 12, 2008.<br /><br /><b>UPDATE:</b><br /><A HREF="http://davetroy.blogspot.com/2008/02/design-and-elastic-mind-opening-night.html">Opening Night Photo Report!</A><br /><br />Beyond that, here's what else is going on:<br /><br /><b>Jeff Pulver's Social Media Breakfast in New York - Feb 26 8AM</b><br />Jeff's been sponsoring these events in cities across the country (and around the world) the last few months, and I made it to the most recent one in Washington DC on February 7th. It was a blast; a chance to catch up with some old friends and make many new ones. If you are interested in social media, I suggest you seek out one of these breakfasts near you. Seek out the details for this event on Facebook and RSVP. They fill up fast.<br /><p><br />If all goes well, I will also be appearing on Jeff's show <A HREF="http://pulvervblog.pulver.com/pulvertv.htm">PulverTV</A> as part of my visit to New York that day. Please stay tuned for the details on that.<br /><p><br /><b>eComm 2008 - Sunnyvale, CA - March 12-14</b><br />I'll be speaking at eComm 2008 about open source telephony, social media and making wild and crazy things. eComm is the next version of what was O'Reilly Media's eTel show. While no longer affiliated with O'Reilly, it should be the premier venue for telecommunications innovators and will feature a good representation from the handset, carrier, and open-source worlds. Of all the shows I attended last year, eTel was one of the most valuable, and eComm is carrying the torch forward.<br /><br />There's still time to get in on eComm. Please visit the <A HREF="http://ecommmedia.com/">eComm website</A> for more information and to register.<br /><p><br /><b>VON.x 2008 Spring - San Jose, CA - March 17-20</b><br />This is Jeff Pulver's big semi-annual US tradeshow about IP Communications. While originally focused on VoIP, it has expanded to cover video and social media. I've been attending nearly every VON show since 2003 or so and have found the sense of community and camaraderie to be very valuable. Don't miss the party. Jeff manages to get some great bands and everybody always has a great time.<br /><br />This year VON.x will be co-located with Digium Asterisk World, a joint-venture between Pulver Media and Digium. I'll be speaking at Digium Asterisk World on March 18th. Please visit the <A HREF="http://www.von.com/2008/sanJose/web/">VON</A> website for more information and to attend.<br /><p><br /><b>Other Jeff Pulver Social Media Breakfasts</b><br />I'll also be attending these other Jeff Pulver social media breakfasts:<br /><ul><br /><li>San Jose, March 17 (as part of VON)<br /><li>Baltimore, March 25 (it's in my hometown!)<br /><li>Washington, DC, May 1<br /></ul><br />I'm looking forward to meeting folks at all of these events and hope to have a lot to talk about in the next few weeks. Meantime, please do stop by the MoMA in New York and check out Design and the Elastic Mind.<br /><br />See you on the road!Dave Troyhttp://www.blogger.com/profile/09594731243753943289noreply@blogger.com0tag:blogger.com,1999:blog-6909367658433794196.post-24743067510895156842008-02-07T08:02:00.000-08:002008-02-08T06:30:08.609-08:00The Wire and the Wireless: Marc Steiner and WYPRIn Baltimore, life is imitating art this week.<br /><br />If you have followed the HBO show <A HREF="http://www.hbo.com/thewire/">The Wire</A>, you know that it's not really just a "police" show, but is really about the economics of cities. It shows us in heartbreaking and sometimes humorous detail how the drug trade, police, politics, labor, education, and the media are all entwined, complicit in creating exactly the social landscape we inhabit. Good and bad, the show's creator David Simon likes to say that, "this is as much America as we've paid for," and hopes to show us how this ecosystem really operates.<br /><br />I'm not much of a TV watcher, but because The Wire is about my hometown of Baltimore, I watch it with special interest. Besides the show's already complicated fictional storyline, there are parallels to the real world that those of us who live here can pick up on. The fictional mayor is a doppelganger for Martin O'Malley; the city council president is a version of Sheila Dixon. Former Governor Bob Ehrlich made an appearance as a security guard at the State House. I could go on and on; for lovers of Maryland the show is a rich trove of on-location shoots, cameo appearances and, really, is a kind of love-letter to Baltimore.<br /><br />The current season focuses on the media. In the show, the Baltimore Sun is facing outside ownership (really happened) and cutbacks (really happened) and the closure of its foreign bureaus (really happened). The paper staff is asked to "do more with less" and accept that fact that the newspaper business is changing. More focus is placed on the bottom line than on reporting, and naturally, quality suffers.<br /><br />While David Simon (the show's creator) has been criticized for creating an oversimplified caricature of the Sun and its woes (especially when compared to his somewhat more nuanced portrayals of law enforcement and political worlds), his portrayal of the media still rings true.<br /><br />In fact, this week it seemed particularly prescient as Baltimore suffered yet another in its long line of indignities: the loss of Marc Steiner from its public radio airwaves.<br /><br />Marc has been a fixture in Baltimore public radio for the last 15 years. As host of "The Marc Steiner Show" from 1993-2008, he shed "light, not heat" on the complex world we live in; on facets of Baltimore, of Maryland, and the world at large. In 2002, Marc led an effort to purchase what was then WJHU from Johns Hopkins University (my alma mater) and make it into a public radio station with significant community involvement. By all accounts, he was instrumental in helping to raise over $750,000 to help purchase the station, and to many in the public was perceived as Mr. Public Radio in Baltimore.<br /><br />However, the total financing required to purchase the station from Johns Hopkins was $5 million, and other investors stepped in to fill the gap. While it was a minor miracle to have raised the initial $750,000, the remainder had to come from somewhere, and several investors, including Tony Brandon, Barbara Bozzuto, and others helped to seal the deal. Since WYPR was launched in 2002, it has been very successful. Many new programs have been launched, and it has been one of a few things that Baltimoreans could be really proud of.<br /><br />The Marc Steiner Show, running from 12-2pm Monday-Thursday, has been one of its most recognizable features. Marc's voice, his laugh, and his theme song are as much Baltimore as Natty Boh and blue crabs. Marc has been such a recognizable champion of Baltimore that he's even been included in The Wire; once as an unseen voice on a car radio, and again as a moderator of a political debate (something that he's also done).<br /><br />The last Marc Steiner show was broadcast last Thursday. WYPR's manager Tony Brandon cited sagging ratings as the reason for the show's cancellation. While this may be true, a careful reading of <A HREF="http://www.citypaper.com/news/story.asp?id=10943">history</A> shows that there has been a long-standing philosophical gap between Steiner and WYPR manager Tony Brandon.<br /><br />Like David Simon, who was offered a buyout deal to leave the Sun, Brandon offered Steiner a $50,000 buyout deal to leave WYPR and not speak to the media.<br /><br />If there's one thing I know, it's that you shouldn't try to bribe a hippie. Especially one that's still got his integrity and that is beloved by a decent chunk of the local population.<br /><br />As you can imagine, this has turned into a fiasco. It's not clear how it will resolve itself, what should happen, who's to blame for what, when. It's like something straight out of season 5 of The Wire. There is a complexity at work here; however, one thing is certainly true: Marc has done a tremendous public service to Baltimore and to Maryland the last 15 years, and he deserves recognition and thanks for that service.<br /><br />As a former guest on Marc's show (I was on roughly once a month from about 1998-2001 talking about technology and internet topics), I'm a participant in the drama, even if in a small way. My friend Erik Monti, myself, and others have formed a Facebook page to help <A HREF="http://www.facebook.com/pages/Support-Marc-Steiner/7647754732?ref=mf">Support Marc Steiner</A>. Whatever happens, we want to do what we can to make sure that Marc gets a fair deal out of this, and that people know how much he meant to Baltimore.<br /><br />It's a shame that David Simon didn't get a chance to include this final coda of the corporatization of Baltimore's media in The Wire. Now, let's do a quick count:<br /><br />We're down The Wire and Marc Steiner. We won't even get to hear Marc interview David Simon anymore. As WYPR's "owners" (if they are not the public) grapple with what to give us instead of Marc, I hope they consider that ratings are not the only measurement of value.<br /><br />If that was true for television, we'd have only American Idol (a ratings star) rather than The Wire (which struggles in ratings); this would surely be a tremendous loss. HBO deserves credit for allowing David Simon to create important art and entertainment that transcends the need for "ratings".<br /><br />WYPR should have allowed Marc Steiner the same freedom. Sometimes, a realistic portrait isn't what we want to see, but we need it nonetheless.<br /><br />And as for WYPR, this is -- apparently -- as much radio as we've paid for.Dave Troyhttp://www.blogger.com/profile/09594731243753943289noreply@blogger.com6tag:blogger.com,1999:blog-6909367658433794196.post-90660938491002481092008-02-05T12:29:00.000-08:002008-02-09T07:01:37.052-08:00ActsAsRenderer Brings Output to ModelsJudging by the fact that there are <A HREF="http://blog.yanime.org/articles/2006/08/05/rails-calling-render-outside-your-controllers">several</A> <A HREF="http://en.logilogi.org/MetaLogi/RenderAndActionViewOutsideRails">posts</A> about this topic out in the wild, and that I have come across a need for it more than once, I thought it would be helpful to wrap up this functionality into a plugin and put it out into the world. Give a warm welcome to <b>ActsAsRenderer</b>!<br /><br />Before you go off on a tirade about the evils of violating MVC, let me first say I know the arguments and I agree with you. However, in a world of complex systems where not everything is done via full-stack HTTP, there are legitimate reasons to output data directly from models, and ActsAsRenderer helps you do it.<br /><br />With ActsAsRenderer, you get four cool new functions.<br /><br />For your model class, you get <b>render_file</b> and <b>render_string</b>. For your instances, you get <b>render_to_file</b> and <b>render_to_string</b>.<br /><br />Probably the most common (and legitimate) use of this kind of functionality is for rendering data out of a Rails script (say with script/runner). Since that environment is not a full-stack HTTP view of the world, it's a real pain to render any kind of structured output. Not anymore! With <b>acts_as_renderer</b> in your model, you can render your views and give your model the voice it's been lacking!<br /><br />I've had this need come up several times. Most recently, I built a server configuration management system using Rails. While it is nice to preview the rendered configuration files using Rails-over-HTTP, it is also essential to be able to write those same configuration files out to the filesystem. In another case, I had a background DRb process that needed to be able to render templated output to the filesystem. I had to go build a mock-controller and do some pretty unsavory things; all of that would have been obviated with acts_as_renderer.<br /><br />Now, I can simply say:<br /><br /><pre><br />class Server < ActiveRecord::Base<br /> acts_as_renderer<br /> <br /> def build_configuration<br /> CLIENT_CONFIG_FILES.each do |f|<br /> render_to_file("configs/#{f}", "#{config_dir}/#{f}.conf")<br /> end<br /> end<br />end<br /></pre><br /><br />The render_to_file function renders the templates located in configs (under app/views by default) and writes them to the files specified in the config_dir; it's also smart enough to know that render_to_file is being called from a 'server' instance and sets @server accordingly. So my templates in configs are simply:<br /><br /><pre><br />; Configuration Snippet for Server <%=@server.description%><br /><br /><%= render :partial => 'configs/queue', :collection => @server.queues %><br /></pre><br /><br />Please do <b>think</b> before using this plugin. It can be used for some seriously evil violations of good MVC design practice, and you are responsible for your own actions. However, this can also be used to make your existing designs *much* more robust and elegant, and I encourage you to use it where that is true.<br /><br />It's ready to drop in. Everything is there, including tests. Enjoy!<br /><br /><b>NOTE:</b> Version 1.0 only supported Rails 2.0; I just added version 1.01 which will work with either Rails 1.2.x or 2.0.x. Please feel free to ping me with any questions.<br /><br /><A HREF="http://rubyforge.org/projects/actsasrenderer/">acts_as_renderer</A> at RubyForgeDave Troyhttp://www.blogger.com/profile/09594731243753943289noreply@blogger.com16tag:blogger.com,1999:blog-6909367658433794196.post-78711755732298184522008-01-28T10:24:00.000-08:002008-01-28T11:32:29.460-08:00Announcing Spinvision.TV!Well, folks, it's here. The new global time-waster video art project, <a href="http://spinvision.tv">Spinvision.TV</a>!<br /><br /><a href="http://spinvision.tv"><IMG SRC="http://spinvision.tv/images/spinvision_screenshot.png" border="0" alt="Spinvision.TV"></a><br /><br />Since releasing <a href="http://twittervision.com">Twittervision</a> and <a href="http://flickrvision.com">Flickrvision</a> last year, I've been imagining what other kinds of visualizations could be created. It was really a natural progression. First text, then photos, and now videos. It's a trilogy of global media trivia.<br /><br />Spinvision.TV takes videos from YouTube and plots them on a moving globe. The globe is provided by my friends at <A HREF="http://poly9.com">Poly9</A> and is built in Flash; since Flash includes video player capabilities, it was a matter of tweaking things to get the Poly9 FreeEarth component to work the way I wanted it to, and Poly9 was very helpful in making this happen.<br /><br />We also had the idea to show night and day imagery of the earth, and I worked with Poly9 to put that together; the part of the globe that is illuminated is where it's really day when you're watching!<br /><br />The end result, I hope, is an innovative, fresh look at "Video On Earth" and it's a view that I hope is captivating, educational, trivial, humorous, ridiculous, and truthful.<br /><br />The simple idea behind Twittervision and Flickrvision was to show the earth in a new way. I think Spinvision does that too. While there is no shortage of online video content, it seems cloistered, disconnected, and partitioned. My goal with Spinvision was to break down those walls and provide the context of place and time.<br /><br />Geography may seem irrelevant today, in the age of the global Interweb, but it still matters. The content that comes from our hometowns says much about who we are. Video posted from Saudi Arabia says something that people in France or in the United States need to see. Of course, we have more in common than divides us, but we need to visualize and comprehend that. And of course, we should be aware of our genuine cultural differences, and what they really are.<br /><br />On YouTube (and other video sites) it's all too easy to watch videos from people just like you about people just like you who like the things that you like and who live in the country that you live in. While it's possible to break out of that and watch just about anything, the user interfaces don't encourage that.<br /><br /><b>Spinvision.TV wants you to watch outside your comfort zone.</b><br /><br />We are seeking to partner with other video content sites besides YouTube, and would ask you to please <a href="mailto:dave@spinvision.tv">contact us</a> if you have video content that you would like to see presented on Spinvision.TV.<br /><br />I like to think of Spinvision as a love-letter to the world, written in Javascript. I hope that <b>you</b> find it to be an engaging visualization of life on Earth -- or at least fun!<br /><br />Please help me spread the word, and thanks again for your continued support and interest!Dave Troyhttp://www.blogger.com/profile/09594731243753943289noreply@blogger.com2tag:blogger.com,1999:blog-6909367658433794196.post-32314995964720986252008-01-16T08:02:00.001-08:002008-01-16T08:31:31.499-08:00Update: iPhone Location Data EULAMy previous post got me wondering what Apple's EULA says about location data collected by and on the iPhone. Like most people I breezed past the 1.1.3 EULA agreement without studying it, and then found I had to dig around online to find the <A HREF="http://images.apple.com/legal/sla/docs/iphone.pdf">iPhone License Agreement</A>, which I finally did on Apple's site.<br /><br />Section 4(b) is the relevant piece:<br /><br /><div style="background: #eee; padding: 10px;">4. Consent to Use of Non-Personal Data. <br />(a) You agree that Apple and its subsidiaries may collect and use technical and related information, including but not limited to technical information about your iPhone, computer, system and application software, and peripherals, that is gathered periodically to facilitate the provision of software updates, product support and other services to you (if any) <br />related to the iPhone Software, and to verify compliance with the terms of this License. Apple may use this information, as long as it is in a form that does not personally identify you, to improve our products or to provide services or technologies to you. <br /><br /><div style="background: #ff0; padding: 8px;">(b) Apple may provide certain services through your iPhone that rely upon location information. To provide these services, Apple and its partners may collect, maintain, process and use your location data, including the real-time geographic location of your iPhone. By using or activating any location-based services on your iPhone, you agree and consent to Apple's and its partners' collection, maintenance, processing and use of your location data to provide you with such services. The location data is collected in a form that does not personally identify you. You may withdraw this consent at any time by turning off the location-based feature on your iPhone or by not using the location-based features. Turning off or not using these features will not impact the functionality of your iPhone. <br /></div><br /></div><br /><br />A couple of basic points here. First, Apple asserts that they may collect and share with its partners location data from the phone. They secondly assert that the location data is collected in a way so as not to "personally identify you." I am not sure I agree with that statement based on my previous post, but let's give them the benefit of the doubt for now.<br /><br />Second, they go on to say that the user can "withdraw their consent at any time" by "turning off the location-based feature." How? Where is that button in the preferences?<br /><br />Third, they make the statement that "turning off or not using these features will not impact the functionality of your iPhone." Uh, yeah it will (assuming it were possible). I won't have location-based services or maps, which is a real reduction in the functionality of the phone.<br /><br />Let's take a look at the newly published <A HREF="http://images.apple.com/legal/sla/docs/ipodtouchjanuary08softwareupgrade.pdf">iPod Touch January '08 Software Upgrade License Agreement</A>, which we would expect should address the newly-added location features specifically.<br /><br />Once again, the same section 4(b) contains the same text as the iPhone Software License Agreement. So, they consider the location services in the iPhone and iPod Touch to be legally equivalent, which is interesting to note.<br /><br />Seems to me Apple's in an interesting place with this location data business. The location data that is collected is packaged in HTTPS, so we can't inspect it. It is theoretically possible that it contains nothing that can identify a given user "personally," but what does that mean?<br /><br />Does it contain an iPhone serial number, or an IMEI number, or a phone number? How is this data stored? While that data, by itself, may not personally identify you, could it be correlated with data that does? Is that possibility covered by the SLA as written?<br /><br />I will assume that Apple and its lawyers have thought this through. However, there are some interesting issues raised here. Now that the iPhone/iPod Touch has location support, we should expect Apple, and possibly third party developers, to leverage that location data in interesting ways.<br /><br />The most interesting ways involve tying identity to location, so if anything is going to happen down this path, then the SLA, as written, is not going to suffice.<br /><br />In the meantime, you can bet that somebody is going to consider whipping up a class action suit because there is no clearly marked way to turn off the location-based services, and because "turning off LBS" <b>does</b> affect functionality -- your phone doesn't know where you're at!<br /><br />And keep an eye on that SLA for future versions -- you can bet that the wording on the location data is going to evolve.Dave Troyhttp://www.blogger.com/profile/09594731243753943289noreply@blogger.com0tag:blogger.com,1999:blog-6909367658433794196.post-26258534466781301192008-01-16T04:11:00.000-08:002008-01-16T05:17:51.102-08:00Apple Knows Where You Are: Sniffing the iPhone Location Service in 1.1.3When Apple announced yesterday that the iPhone would now be "location-aware" with the release of their 1.1.3 software, I was curious how they had done it.<br /><br />I've been working with location information quite closely (see <A HREF="http://twittervision.com">Twittervision</A>, for example) for the last year or so and have had some conversations with different companies about how Apple might geo-enable the iPhone.<br /><br />There are three options available:<br /><ul><br /><li>GPS<br /><li>Cell Tower ID<br /><li>Wifi Access Points<br /></ul><br />GPS is not an option at present. E911 laws in the US have required carriers to provide location information for some time, but that could be via GPS or from cell tower triangulation data. <A HREF="http://www.trueposition.com/">TruePosition</A> makes this their entire business, and is the primary location information provider for AT&T and T-Mobile in the US. A pretty cozy gig, eh? They do this by way of tracking cell tower information within the network, from what I understand.<br /><br />GPS may be an option later if Apple adds an AGPS (assisted GPS) chipset to the iPhone or supports external Bluetooth GPS units, but external bluetooth will never be a true mass market phenomenon, and AGPS is at least going to have to wait for the next iPhone refresh, probably not til next year.<br /><br />Cell Tower ID is another option. Carriers know where their cell towers are (we hope), and by comparing the signal strength and the intersection of multiple cell tower antenna distribution patterns, you can make a pretty fair guess about where the user is. It's not always spot-on accurate, but it's pretty close.<br /><br />Wifi AP's are the third option. There are millions of Wifi AP radios running around the world at this point, and for the most part, they tend not to move around that much. They do, however, come and go from time to time. However, there are a lot of them, and with a modest investment in driving around populated areas, one could build up a pretty accurate database of what APs are where. Then they could sell that database to people who want to know where their Wifi client radios are.<br /><br />This is exactly what my friends up at <A HREF="http://www.skyhookwireless.com/">Skyhook Wireless</A> have done. You can try out their <A HREF="http://loki.com">Loki</A> service for your laptop (Firefox/IE plugin). Suddenly, if you have Wifi, you also have a pseudo-GPS capability.<br /><br />Judging by the fact that Skyhook invited me to stop in and see them today at MacWorld (which I would have loved to do, but am sadly unable due to my being at home in Maryland this week), it seems Skyhook got the contract to provide some location data to Apple. Apparently, the iPhone uses both Cell Tower ID and Wifi (Skyhook) data for location, while the iPod Touch uses Skyhook exclusively. Good Job, guys!<br /><br />This explains why when I went to see Skyhook in June and said that a company like Apple might be very interested in their technology, there was a definitive "no comment." This happens a lot; companies like to protect what might be a very early-stage negotiation, or even an intention, a lot of the time. But in this case it looks like Skyhook bagged what might be their killer deal.<br /><br />Yesterday, I succumbed to the hype and <A HREF="http://code.google.com/p/iphone-elite/wiki/RevirginizingTool">"Revirginized"</A> my iPhone (we had been engaged in some unsavory hacking) so I could safely install the new 1.1.3 software update that Steve said would be available. The revirginizing and upgrade went as clean as could be, and now my phone is running 1.1.3.<br /><br />I thought I might "inspect" what the phone is doing when you do a location lookup. I have a bunch of resources on my home network, including a multipurpose Linux server, so I thought if I could pass the iPhone's traffic through the Linux box, some tools like ngrep and tcpdump might reveal what exactly happens when the iPhone tries to position itself.<br /><br />Well, turns out I was mostly right. In typical Apple fashion, though, they're keepin' it real with HTTPS, revealing nothing very interesting about how the location information works.<br /><br />The iPhone is 192.168.1.199 and my proxy is 192.168.1.10.<br /><br />Here's what I saw:<br /><br /><pre><br />T 192.168.1.199:49311 -> 192.168.1.10:2525 [AP]<br />CONNECT iphone-maps.apple.com:443 HTTP/1.0.<br />Host: iphone-maps.apple.com.<br />User-Agent: Apple iPhone v1.1.3 Maps v1.0.0.4A93.<br /><br />T 192.168.1.10:2525 -> 192.168.1.199:49311 [AP]<br />[..HTTPS DATA...]<br /><br />T 192.168.1.199:49311 -> 192.168.1.10:2525 [AP]<br />[..HTTPS DATA...]<br /></pre><br /><br />So, alas, nothing to see here, really... move along. However, we do now know that Apple is grabbing data from the phone via HTTPS, processing it network-side, and rendering a response to the phone about its position. We do not, for example, see a variety of calls to Skyhook, Google, or elsewhere, which is not inconceivable without verifying it.<br /><br />After the HTTPS call, we see this unencrypted call:<br /><br /><pre><br />T 192.168.1.199:49313 -> 192.168.1.10:2525 [AP]<br />POST http://iphone-wu.apple.com/glm/mmap HTTP/1.1.<br />Accept: */*.<br />Accept-Language: en.<br />Accept-Encoding: gzip, deflate.<br />Cookie: s_vi=[CS]v1|46B904DB00003607-A290B210000599B[CE]; s_nr=1199572400032.<br />User-Agent: Apple iPhone v1.1.3 Maps v1.0.0.4A93.<br />Content-Type: application/x-www-form-urlencoded.<br />Content-Length: 145.<br />Connection: keep-alive.<br />Proxy-Connection: keep-alive.<br />Host: iphone-wu.apple.com.<br /><br />...<br /><br />T 192.168.1.199:49313 -> 192.168.1.10:2525 [AP]<br />..*..m..DN..en_US..com.apple.iphone.<br />1.0.0.4A93......@.......?...&_...>....&`...>.......&]...>....&^...>....&\...>....&_...>....&[...>....&`...>.<br /><br />T 192.168.1.10:2525 -> 192.168.1.199:49313 [AP]<br />HTTP/1.1 200 OK.<br />Date: Wed, 16 Jan 2008 12:38:31 GMT.<br />Server: GFE/1.3.<br />Content-Type: application/binary.<br />Content-Length: 113.<br />Cache-control: private.<br />Connection: close.<br /></pre><br /><br />Not sure what this all is, but it looks like it has my iPhone serial number in there. It's so nice that Apple wants to know so much about my phone, its serial number, its position. Why, if DHS ever has any doubts about me, perhaps they could simply just ask Apple? Maybe they know where I am.<br /><br />What is Apple's position (pun intended) on customer privacy, now that they seem to be in the location data business?<br /><br />Other firms like Boost Mobile's Loopt service have gone to great (ridiculous) lengths to inform their customers about location data privacy and to protect collected data. So as to avoid potential problems, Loopt does not even save a location track for its users, but instead stores only the <b>current</b> location of the user. (This was the case when I spoke with them in May 2007.) They figure this makes them less of a honeypot for DHS types, and keeps their customers happy.<br /><br />I have never believed that consumers are as paranoid about location data as the press (and the most paranoid among us) would have us believe. Most people are willing to generate, share, and publish some limited amount of location data if it provides some value to them in return and they can control the data sufficiently.<br /><br />What seems like a simple software update for the iPhone is actually the consent of millions (4M+ according to Steve) of users to potentially publishing their location information. And not just for the iPhone, but for the iPod Touch as well.<br /><br />Now the question is what a theoretical 1.2.0 software release might hold: location of your iChat buddies? Location-enabled Twitter clients (using the Twittervision API)? Your friends conveniently plotted on the Google Maps client? All of this is now theoretically possible with the iPhone and iPod Touch now, and Apple holds the keys.<br /><br />It will be very interesting to see how the iPhone SDK (Software Development Kit) works next month. If Apple opens up this location service to third party developers, we can expect to see some very interesting applications emerge this year.<br /><br />The fact that the location service is not down to meter-accuracy is irrelevant (it put me, alternately, within a few feet of my house and across the river at the Annapolis Mall -- I suspect because it was alternating between an accurate Wifi position and a more general cell tower position). To make social location services work, all we really need to know is generally where someone is (nearby) and that they are really there (device has reported location).<br /><br />There are plenty of apps where approximate location is sufficient (stores nearby, friends nearby, homes for sale nearby, etc). Only for driving-direction or aviation applications do you need meter-accuracy. A later update to the iPhone hardware with an AGPS chipset will solve that problem, but even without that, this opens up an amazing array of possibilities.<br /><br />Mostly, great credit should go to Apple for pushing out a technology so seamlessly, so effortlessly, that so many others have found so problematic and full of legal and perceived landmines. This is a big deal. Skyhook, Loopt, uLocate, Nokia, Navizon, and dozens of others have been grasping for this holy grail for some time, and they've been told variously that it's "impossible to get the data," or that "consumers won't go for it", or that "no one would fund it."<br /><br />Apple did it via iTunes with a software update. Agree? Kudos, Steve.Dave Troyhttp://www.blogger.com/profile/09594731243753943289noreply@blogger.com3tag:blogger.com,1999:blog-6909367658433794196.post-85914498210330461612008-01-12T09:21:00.000-08:002008-01-12T10:48:06.756-08:00Where are the Great Men and Women of our time?As we enter into 2008 and a new US presidential election cycle, I am once again struck that the available candidates are all compromises; compromises between our ideals and the political and economic realities that rule the world today.<br /><br />As we look back on the arc of recent history, we can point to some truly great individuals who managed to crystallize the mood of their era and, like a flame, transform it into something greater. From the French Revolution and Rousseau's social contract, Napoleon cast modern France and set the stage for many nations around the world.<br /><br />Unlike Napoleon, who offered equality and efficiency but a near totalitarian government, Jefferson, Washington, Adams, and Franklin wanted a government that could somehow withstand the forces of upheaval that had plagued so many before. They wanted to build a nation which could outlast the lifespan of just one Great Man, for they correctly supposed that Great Men were hard to find.<br /><br />The three governmental branches and the deference of power to local governments are major strengths of the American Constitution and, really, have enabled the nation to hobble along between its handful of Great Men. In a sense the American system does its best to transform Ordinary Men into Capable Men. Sometimes it has transformed Capable Men into Great Men.<br /><br />Lincoln was faced with the task of reconciling our ideals (all men are created equal, we the people, etc) with the economics of the day. Slavery was an economic reality that some felt was unavoidable, insurmountable, and even sanctioned by scripture. However, Lincoln realized that a divided nation was vulnerable. Lincoln had the unenviable task of explaining this to the nation, which he did so eloquently and forcefully.<br /><br />Lincoln was called to tell the nation that which it did not want to hear. Washington and Jefferson did much of the same. Even Napoleon had to make a case that efficient government was better than a nonexistent but ideal government. In each of these cases, intelligent and thoughtful men have been called to reach beyond what's politically and economically expedient to inspire, coerce, cajole and charm their constituencies into doing what is in the long-term best interest. It has seldom been easy.<br /><br />In the distant future, when we look back on the last 100 years, I believe that we will see is a nation which has not learned to reconcile its politics with its economics, and which has hobbled on on the shoulders of but a few Great Men. Arguably the greatest transformative leaders of the 20th Century were Churchill, Franklin Roosevelt, Hitler, and Stalin. Roosevelt and Churchill were called to greatness by being locked in conflict with Hitler and Stalin.<br /><br />While it is very tempting to include other American presidents like Wilson (father of the UN), Kennedy (a leader of the civil rights movement and an inspiration in the light of the Cold War), and Reagan (a truly great communicator who deserves some credit for the fall of the USSR), the simple fact of the matter is that these people were reacting to their circumstances. In a sense, Kennedy and Reagan were cleaning up Stalin's aftermath, and Wilson unknowingly laid the groundwork for HItler's ascent by presiding over Versailles.<br /><br />But the Great Men have reacted to their circumstances, as well. Somehow, though, the Great Men are called to do more than simply react, more than simply show up, more than simply hold to their convictions. The actions of Great Men are outsized, just-right, artful and inimitable.<br /><br />They have led us forward at times when we did not want to be led; showed the way at times when economics and politics offered more expedient paths; cast a visionary spell on the populace at a time when we needed to believe. Great Men have the power to call ordinary people to become extraordinary.<br /><br />Today, our politics is inextricably tied to our economics. The founders expected that; the state system is designed to give regional economic interests fair say in the process and to insure that no one state dominates our national political debate. Today, however, this seems quaint.<br /><br />The economic debates that matter today are not about whether to build a canal in New York or in Michigan; our economic debates are about the regulation of global corporations, human rights in China, global free trade, and immigration. Somehow it doesn't seem the founding fathers anticipated the rise of the multinational corporation, and specifically its potential to influence American and global politics.<br /><br />Today, the measure of a candidate's popularity or viability is their ability to raise money. The candidates with the most money are generally those who are most agreeable to American Corporations. The candidates who are the most agreeable to American Corporations are also those who are most agreeable to global, multinational corporations. Therefore, we have a system where global multinational corporations get the first and most influential vote.<br /><br />In a world of uneven regulations and where global corporations have only one mandate -- to make money for their shareholders -- we face a situation where our candidates are hostage to companies, and indirectly of governments other than our own. If Exxon/Mobil supports a candidate because they believe they will take a laissez-faire attitude towards environmental regulations in China, and if the Chinese government prefers to operate without environmental regulations because it believes it will generate more revenue, we indirectly have candidates who are locked into a variety of unsavory positions around the globe.<br /><br />This is not news. It is also not realistic to suggest that we decouple the American democracy from capitalism; it is reasonable to have our system of government be influenced by and aligned with our engine of economic progress. We can temper the flaws in capitalism with sensible regulation and policy. We do a fair job of it.<br /><br />The question remains, however: where are the Great Men, or Women, of 2008?<br /><br />We have various people who think it's their turn, or who have been anointed by global capitalism as acceptable, but to be frank, it is hard not to wonder if Ronald Reagan was right: that the best minds are not in government, that if they were they would be hired away by business.<br /><br />That maxim may be true, but the converse probably isn't. If it was, the best possible candidates would be hedge fund managers. However, Bloomberg may still run.<br /><br />It seems we have lost a sense of what it means to be a public servant. With the scrutiny, the media, and the schedules that come with presidential politics, you really do have to be crazy to run. Is it any wonder, then, that we ended up with the oddball mix that we have?<br /><br />It is doubtful that a Roosevelt or a Lincoln would fare too well in today's races. Why is that? Maybe Roger Ailes could tweak Lincoln up a bit. (Lose the top hat, ditch the beard, a layer of foundation and a $400 haircut and you still flub Hannity & Colmes?)<br /><br />Perhaps we have some Great Men and Women in our midst here in 2008. Certainly Obama is using the soaring rhetoric of a great leader, however it's tough to know if he has the mettle to withstand the global political/economic machine once in office. Ron Paul certainly has no problem saying things that are unpopular. Hillary is trying hard but has a hard time inspiring, not unlike the rest of the candidates.<br /><br />I am left feeling, as I think we all are, that we still haven't found that one great leader who can crystallize and transform the challenges of our time. But if history is any solace, we know that a great leader comes but a few times a century. Maybe it's just not our turn.Dave Troyhttp://www.blogger.com/profile/09594731243753943289noreply@blogger.com4tag:blogger.com,1999:blog-6909367658433794196.post-33025432354919523292007-12-29T07:11:00.001-08:002009-04-28T08:58:30.560-07:00Automatic Asset Minimization and Packaging with Rails 2.0.xWith the recent release of Rails 2.0, many of us are reviewing our approaches to common problems. Many new features have been added to Rails, and some old tricks are either no longer necessary or no longer work.<br /><br />I am developing a project with Rails 2.0 and am getting close to putting it into production. A recurring issue for today's web developers is that of <b>asset packaging</b>, or the combination of multiple site assets into a single file. Specifically, we're talking about Javascript and CSS.<br /><br />A given "Web 2.0" (a term I wish had recently been found dead in a cramped apartment in Brooklyn) site might have a half dozen Javascript or CSS files to deliver to a user, and web browsers are not all that efficient at retrieving them. Each one requires a separate TCP connection to the server, and many browsers are only capable of getting two of these files concurrently. This means delays for your users.<br /><br />In Rails 2.0 (and previously in Edge Rails), it's possible to combine multiple Javascript and CSS files using the <b>javascript_include_tag</b> and <b>stylesheet_link_tag</b> functions in your <i>html.erb</i> files; simply add <b>:cache => true</b> to the parameters like this:<br /><br /><pre><code><br /><%= javascript_include_tag 'prototype', 'effects', :cache => true %><br /><%= stylesheet_link_tag 'main', 'shop', 'form', :cache => true %><br /></code></pre><br /><br />With <b>:cache => true</b> and when running in your production environment, Rails will automatically combine your Javascript and CSS assets into single files (all.js and all.css, respectively) and significantly reduce your site's load time.<br /><br />However, this really only solves part of the problem. A common technique used to further improve site performance is to compress Javascript and CSS by removing unnecessary whitespace and comments. I am not sure why this wasn't included as part of Rails' built-in caching features, but it seemed to me it should be easy to add.<br /><br />Turns out I was mostly right. Google "javascript minimization" (or <i>minification</i>) and you'll see it's a pretty hot topic. The Asset Packager plugin from Scott Becker does this, as well as CSS compression, but is targeted at Rails 1.x and doesn't really make sense in the face of Rails 2.0.<br /><br />So I set out to solve this problem in an elegant way for Rails 2.0. Asset Packager uses a Ruby script called <b>jsmin.rb</b> by Uladzislau Latynski which is based on <b>jsmin.c</b> by Douglas Crockford. The thing is, jsmin.rb is not a class or library, but rather a standalone executable that operates on <b>stdin</b> and <b>stdout</b>. Asset Pacakger actually <b>forks a ruby shell process</b> to do its Javascript minimization, and this seemed like folly if it could be done internal to Rails.<br /><br />Accordingly, I modified <b>jsmin.rb</b> to operate as a singleton class and with a class method you could pass Javascript data to. Then it was simply a matter of monkey patching this function into <b>ActionView::Helpers::AssetTagHelper</b>, home of <b>javascript_include_tag</b> and <b>stylesheet_link_tag</b>.<br /><br />I also wanted to add in CSS compression, which turned out to be easy. The <b>javascript_include_tag</b> and <b>stylesheet_link_tag</b> functions both use the same underlying functions to package their assets, so it was a simple case of replacing them with equivalents that do compression appropriately, based on whether we are dealing with CSS or JS.<br /><br /><i>config/initializers/javascript_minimization.rb:</i><br /><pre><code><br />module ActionView<br /> module Helpers<br /> module AssetTagHelper<br /> require 'jsminlib'<br /><br /> def compress_css(source)<br /> source.gsub!(/\s+/, " ") # collapse space<br /> source.gsub!(/\/\*(.*?)\*\/ /, "") # remove comments<br /> source.gsub!(/\} /, "}\n") # add line breaks<br /> source.gsub!(/\n$/, "") # remove last break<br /> source.gsub!(/ \{ /, " {") # trim inside brackets<br /> source.gsub!(/; \}/, "}") # trim inside brackets<br /> end<br /> <br /> def get_file_contents(filename)<br /> contents = File.read(filename)<br /> if filename =~ /\.js$/<br /> JSMin.minimize(contents)<br /> elsif filename =~ /\.css$/<br /> compress_css(contents)<br /> end<br /> end<br /><br /> def join_asset_file_contents(paths)<br /> paths.collect { |path|<br /> get_file_contents(File.join(ASSETS_DIR, path.split("?").first)) }.join("\n\n")<br /> end<br /> <br /> end<br /> end<br />end</code><br /></pre><br /><br />By simply modifying <b>join_asset_file_contents</b> to use our new function <b>get_file_contents</b> instead of <b>File.read</b>, we quickly get to the heart of the matter. CSS files get <b>compress_css</b> run on them, while Javascript files get <b>JSMin.minimize</b> run on them. Your <b>:cache => true</b> Javascript and CSS assets will now be gloriously combined and compressed!<br /><br />Note that the above monkey patch requires <A HREF="http://www.popvox.com/jsminlib.rb">jsminlib.rb</A>, which you can download here. It is just a modified version of the original jsmin.rb, and you will want to put it into your Rails lib directory.<br /><br />A good next step would be to further enhance <b>get_file_contents</b> to do Javascript obfuscation, which allows for the replacement of variable names and thus even further compression; it also tends to make Javascript code nearly incomprehensible and thus harder to steal, which may be desirable for some developers. I haven't found any native Ruby ways to do this yet, but it seems to me that this would be a good place for a C extension (or similar), and that this should all be put into a tiny and lightweight plugin.<br /><br />I'm always amazed at how easy it is to bend Rails (and Ruby) to one's will, and in this case it's really quite elegant and straightforward. I'd love to hear your ideas about how to take this idea forward, potentially even including it in Rails itself.<br /><br />Download the files here:<br /><ul><br /><li><A HREF="http://www.popvox.com/docs/jsminlib.rb">lib/jsminlib.rb</A><br /><li><A HREF="http://www.popvox.com/docs/javascript_minimization.rb">config/initializers/javascript_minimization.rb</A><br /></ul>Dave Troyhttp://www.blogger.com/profile/09594731243753943289noreply@blogger.com9tag:blogger.com,1999:blog-6909367658433794196.post-45834116176160718052007-11-14T13:31:00.000-08:002007-11-17T12:48:24.463-08:00Hacking Freerice.com: A Program to Feed the WorldWhile I was working on some changes to <A HREF="http://twitterivsion.com">Twittervision</A> yesterday, I saw someone mention <A HREF="http://www.freerice.com">freerice.com</A>, a site where you can go quiz yourself on vocabulary words and help feed the world. How? Each word you get right gives 10 grains of rice to, one hopes, someone who needs it.<br /><br />The idea is that you will sit there for hours and look at the advertising from the do-gooder multinationals who sponsor it. Which I did for a while. I got up to level 44 or so and got to feeling pretty good about Toshiba and Macy's.<br /><br />It occurred to me though that my computer could also play this game, and has a much better memory for words than I do. In fact, once it learns something, it <i>always</i> chooses the right answer.<br /><br />So I wrote a program to play the freerice.com vocabulary game. In parallel. 50 browsers at a time. Sharing what they learn with each other. Cumulatively.<br /><br />It's a multithreaded Ruby program using WWW::Mechanize and Hpricot. Nothing terribly fancy, but it does learn from each right and wrong answer, and after just a few minutes seems to hit a stride of about 75-80% accuracy. And a rate of about 200,000 grains of rice per hour (depending on the speed of your connection).<br /><br /><b>UPDATE:</b> With some tuning, the script is now able to push out about 600,000 grains of rice per hour, which according to the statistic of 20,000 grains per person per day, is enough to feed over 720 people per day! If one thousand people run this script, it will (allegedly) generate enough to feed 720,000 people per day.<br /><br /><b>Before you go off on me, disclaimer:</b> Yes, I realize this program subverts the intent of the freerice.com site. I've released this not to "game" freerice.com but simply to show a flaw in their design and have a little fun at the same time. If what they are after is human interaction, this design doesn't mandate it. That's all I'm saying.<br /><br />Run it for a while and see how many people you can feed! <br /><br />Prerequisites:<br /><ul><br /><li>Ruby (Linux, OS X, Other)<br /><li>Rubygems<br /><li>gem install mechanize --include-dependencies<br /></ul><br /><br /><A HREF="http://www.popvox.com/freerice">Download the code</A>Dave Troyhttp://www.blogger.com/profile/09594731243753943289noreply@blogger.com38tag:blogger.com,1999:blog-6909367658433794196.post-72633660221133674962007-11-10T08:00:00.001-08:002007-11-10T09:01:45.280-08:00Concurrent Erlang: Watch out, API developers!Continuing my theme of lifting ideas from <A HREF="http://pragdave.blogs.pragprog.com/pragdave/2007/04/adding_concurre.html">Dave Thomas'</A> blog posts, in our <A HREF="http://davetroy.blogspot.com/2007/11/erlang-makes-my-head-hurt.html">last episode</A> we built a somewhat broken program to sequentially fetch feed information from Youtube's XML API.<br /><br />I had some trouble understanding why I wasn't getting <b>#xmlText</b> records back from <b>xmerl_xpath</b>. Thanks to a comment by Ulf Wiger, I now understand what was going wrong.<br /><br />As many of us do, I was using the shell to play around with ideas before committing them to my program, and in the shell the record format is not defined because xmerl.hrl is not referenced. This *was* being included in my program, but I wasn't running the program in my testing in the shell.<br /><br />I took his advice, used the force, and got my patterns to match <b>#xmlText</b> records.<br /><br />I also copied Dave Thomas' design pattern for parallel spawning of the fetch process to produce this program which <b>1) grabs a feed of the <i>most_viewed</i> videos on YouTube,</b> and then <b>2) grabs in parallel the user profiles for each of those videos.</b><br /><br />While I still only have a rudimentary understanding of the language, I at least understand everything that's going on in this program. It's amazing how quick concurrent programs in Erlang can be. The <b>fetch_parallel</b> function in this program runs in about 3 seconds, while the <b>fetch_sequential</b> version takes about 20 seconds.<br /><br />If you think about what this means for API developers, it has scary implications. In short, they will need a lot more bandwidth and processing capacity to deal with concurrent clients than are presently needed to deal with a sequential universe. Most API developers are accustomed to interacting with programs that make a single request, do some processing, and then make another related request.<br /><br />A world of Erlang-derived, concurrent API clients likely calls for Erlang-derived concurrent API servers. Today's API interactions are timid, one-off requests compared to what's possible in a concurrent API interaction.<br /><br />Imagine a recursive program designed to spider through API data until it finds the results it's looking for. You could easily write a program that grabs a set of N search results, which in turn generates N concurrent API queries, which in turn generates N^2 concurrent API requests, which in turn generates N^3 requests.<br /><br />You get the idea. Rather than being simple request & response mechanisms, APIs in fact expose all of the data they contain -- in parallel and all at once. A single concurrent Erlang client can easily create as much simultaneous load as 10,000 individual sequential API consumers do now.<br /><br />API developers should start pondering the answer to this question. Right now, there are no standards for enforcing best practices on most APIs. There's nothing to stop a developer from requesting the same data over and over again from an API, other than things like the Google maps geolocation API limit of 50,000 requests per day. But what about caching and expiring data, refusing repetitive requests, enforcing bandwidth limits or other strategies?<br /><br />Many people do all of these things in different ways, but we're at the tip of the iceberg in terms of addressing these kinds of issues. A poorly designed sequential API client is one thing; a badly designed concurrent API client is another thing altogether and could constitute a kind of DoS (denial of service) attack.<br /><br />Start thinking now about how you're going to deal with the guy who polls you every 10 seconds for the latest status of all 142,000 of his users -- in parallel, 15,000 at a time.<br /><br />And for you would-be API terrorists out there, here's some code:<br /><br /><pre style="font-family: Monaco; font-size:10px;"><br />-module(youtube).<br /> -export([fetch_sequential/0, fetch_parallel/0]).<br /> -include_lib("xmerl/include/xmerl.hrl").<br /><br /> get_feed() -><br /> { ok, {_Status, _Headers, Body }} = http:request("http://gdata.youtube.com/feeds/standardfeeds/most_viewed"),<br /> { Xml, _Rest } = xmerl_scan:string(Body),<br /> xmerl_xpath:string("//author/name/text()", Xml).<br /> <br /> get_user_profile(User) -><br /> #xmlText{value = Name} = User,<br /> URL = "http://gdata.youtube.com/feeds/users/" ++ Name,<br /> { ok, {_Status, _Headers, Body} } = http:request(URL),<br /> { Xml, _Rest } = xmerl_scan:string(Body),<br /> [#xmlText{value = Id}] = xmerl_xpath:string("//id/text()", Xml),<br /> [#xmlText{value = Published}] = xmerl_xpath:string("//published/text()", Xml),<br /> { Name, Id, Published }.<br /> <br /> fetch_sequential() -><br /> lists:map(fun get_user_profile/1, get_feed()).<br /><br /> fetch_parallel() -><br /> inets:start(),<br /> Users = get_feed(),<br /> lists:foreach(fun background_fetch/1, Users),<br /> gather_results(Users).<br /><br /> background_fetch(User) -><br /> ParentPID = self(),<br /> spawn(fun() -><br /> ParentPID ! { ok, get_user_profile(User) }<br /> end).<br /><br /> gather_results(Users) -> <br /> lists:map(fun(_) -><br /> receive <br /> { ok, Anything } -> Anything<br /> end<br /> end, Users).<br /></pre>Dave Troyhttp://www.blogger.com/profile/09594731243753943289noreply@blogger.com2tag:blogger.com,1999:blog-6909367658433794196.post-47171838273611039812007-11-04T17:50:00.001-08:002007-11-04T18:51:57.501-08:00Erlang Makes My Head HurtFor those of you who haven't heard about Erlang yet, it is a functional programming language (like Lisp or Prolog) developed quietly over the last 20 years by telecoms giant Ericsson for use in telco switches.<br /><br />Ericsson has been using it for roughly the last 14 years; it has several properties that make it particularly relevant to many of the problems facing developers today. It's one of the few languages that is particularly good at letting programmers take advantage of multi-core/multi-CPU systems, and distribute services across multiple boxes. <A HREF="http://yaws.hyber.org/">YAWS</A>, a webserver written in Erlang and a poster child of its efficiencies, kicks Apache's tail from a scalability standpoint. This is no small accomplishment for a high level language. <br /><br />Today's scaling strategies revolve less around faster clock speeds and more around adding cores. Scaling out to many machines is also important, but power and space considerations are also more of an issue than ever before.<br /><br />So Erlang is gaining ground because it addresses scalability for this new age of multi-core systems. Today you might have a dual Clovertown Xeon box with 8 cores, but very little software to take advantage of it. Once you get past 2 or 4 cores, that extra capacity provides little to no benefit. Enter a language like Erlang, and suddenly all that power becomes available to the programmer.<br /><br />Some of my coder buddies, (<A HREF="http://jicksta.com">Jay Phillips</A>, <A HREF="http://richkilmer.blogs.com/">Rich Kilmer</A> and <A HREF="http://marcelmolina.com/">Marcel Molina</A>) have been looking at Erlang for various tasks, and <A HREF="http://pragdave.pragprog.com/">Dave Thomas'</A> blog posts on Erlang have also inspired me to take a look at the language for some of my own work.<br /><br />I picked up <A HREF="http://armstrongonsoftware.blogspot.com/">Joe Armstrong's</A> book, Programming Erlang from <A HREF="http://www.pragprog.com">Pragmatic Bookshelf</A> and started reading it on a recent airplane flight.<br /><br />Today I put together my first Erlang program, based on knowledge gleaned from Dave Thomas' postings and from the book.<br /><br />This very simple program grabs the <b>top_rated</b> feed of videos from YouTube (an XML RSS feed) and then iterates through the result set to get the profile URL for each user. It is a fairly useless and trivial example, but if I can make this work then there are other things I can do down the line.<br /><br /><pre><br />-module(youtube).<br /> -export([fetch_each_user/0]).<br /> -include_lib("xmerl/include/xmerl.hrl").<br /><br /> get_feed() -><br /> { ok, {_Status, _Headers, Body }} = http:request("http://gdata.youtube.com/feeds/standardfeeds/top_rated"),<br /> { Xml, _Rest } = xmerl_scan:string(Body),<br /> xmerl_xpath:string("//author/name/text()", Xml).<br /> <br /> get_user_profile(User) -><br /> {_,[A|B],_,[],Name,_} = User,<br /> URL = "http://gdata.youtube.com/feeds/users/" ++ Name,<br /> { ok, {_Status, _Headers, Body }} = http:request(URL),<br /> { Xml, _Rest } = xmerl_scan:string(Body),<br /> [{_,[C|D],_,[],Id,_}] = xmerl_xpath:string("//id/text()", Xml),<br /> { Name, Id }.<br /> <br /> fetch_each_user() -><br /> lists:map(fun get_user_profile/1, get_feed()).<br /></pre><br /><br />I am pretty sure I am doing this All Wrong (tm).<br /><br />My biggest area of confusion comes in the pattern matching that's required to match (and thus read) the results from the <b>xmerl_xpath:string</b> parsing. According to Dave Thomas' <A HREF=http://pragdave.pragprog.com/pragdave/2007/04/a_first_erlang_.html>examples</A>, xmerl_xpath should produce a #xmlText record (or a set of them) that can then be matched with the #xmlText{} syntax.<br /><br />In practice, and with the Youtube API data I used, I see no such #xmlText records. Instead I get a flattened tuple from such parsing, along the lines of:<br /><br /><pre><br />>xmerl_xpath:string("//location/text()", Xml)<br />[{xmlText,[{'yt:location',14},{entry,1}],1,[],"GB",text}]<br /></pre><br /><br />The only way I can find to match this is something like this:<br /><br /><pre><br />[{_,[A|B],_,[],Location,_}] = xmerl_xpath:string("//location/text()", Xml)<br /></pre><br /><br />I am sure I am missing some key step or concept, but that's how we learn new languages -- stumble along til we figure out how to solve the things we want to solve.<br /><br />There's an incredible amount of functionality packed into these 19 lines of code. It'll be even more amazing when I figure out my initial questions and then add concurrent processing of the user profile URLs. In theory I can simultaneously process dozens of URL feeds from Youtube and spider their API data as though through a fire hose. Stay tuned.<br /><br />Meantime if anyone has any suggestions on my current puzzlements I'd love to hear them.<br /><br />Erlang is a cool language. It doesn't give me the aesthetic fuzzies I receive from programming in Ruby, but I do get pretty jazzed up thinking about what should be possible from a performance and economy standpoint. Erlang doesn't allow for mutable state; variables have fixed values once assigned, and algorithms are generally handled via recursion. This is how it scales out to so many cores/cpus/machines so readily. It's kinda weird if you're used to "normal" mutable state languages.<br /><br />Whenever I learn a new language (human or computer) I generally have weird and overactive dreams. I attribute this to my brain shuffling things around to accommodate new grammar and semantics.<br /><br />The last few days have produced particularly vivid dreams.Dave Troyhttp://www.blogger.com/profile/09594731243753943289noreply@blogger.com3tag:blogger.com,1999:blog-6909367658433794196.post-91697655823706266922007-10-15T16:46:00.000-07:002007-11-04T14:01:02.576-08:0018 Months Windows-Free (Nearly)I'm Dave and I am a former Windows user.<br /><br />Not that I ever liked it. Back in the day, I used Atari 8-bit and 16-bit 68000 computers. The Atari ST machines were cool because you could run Mac programs on them with the help of the Spectre GCR Mac emulator, and the native Atari programs (like PageStream and Calamus) were actually pretty very good themselves. Power without the price. Stickin' it to the man never felt so good... we had the best of both worlds.<br /><br />Around 1994, as I was also getting into Linux, I started to use Windows as my primary desktop UI. It sucked, but at least back in those days (Windows for Workgroups 3.11) you knew how it sucked and why. And in general you could work around it. It was lightweight enough to be manageable.<br /><br />Back when I ran an ISP, I developed a bunch of software using Microsoft SQL Server, ASP, Access, and other relatively common, garden-variety tools of the day. It got the job done and I was happy enough.<br /><br />During the Mac's PowerPC years, I always found the Mac to be needlessly obscure and imperious; its choice of the PowerPC architecture, while admirable from a performance standpoint, just made very little sense in terms of interfacing with the rest of the world.<br /><br />The Web hadn't really emerged as a viable application development platform at that point, and the Mac was pointlessly obscure in the face of Windows. Everything was available for Windows, and the Mac was precious, delicate, and oh-so-special. I wasn't interested, despite my respect for the platform.<br /><br />Around December 2004 I succumbed and bought an iBook G4, a PowerPC machine. As a software developer I was curious about how OS X was coming along so I thought it would be cool to have a current Mac.<br /><br />When in early 2006, Steve announced they would be switching to Intel chips, I felt a nearly religious change of heart towards Apple, or that Steve had one towards me. The implications were obvious: the long freeze was over. Mac would become Intel friendly, and Intel-friendly OS's like Linux and Windows were suddenly going to be a possibility on the Mac. Yeah, I am aware that there were ways to run Linux and Windows on PPC, but it was hard (and obscure). I'm all about ubiquity and reaching for things that can be done on a huge platform.<br /><br />I went out and bought a Mac Mini Core Duo shortly after and have never looked back. While I'm writing this on my old decrepit iBook G4, I also own a MacBook Pro, a MacBook, a Mac Pro, a MacMini, an iMac, an iPhone, and two iPods. I am a certiifiable Apple Fanboy, though I try hard to hide it (and mitigate it).<br /><br />I still use Windows to run Quickbooks and Quicken, and the occasional odd program (like the Nokia phone firmware updater). It seems it can't be easily avoided. The Mac versions of both Quickbooks and Quicken are crimes against humanity, though the Windows versions aren't much better. No matter, home is where the heart is, and I must say that to finally be using a decent OS on decent hardware on a regular basis is truly bliss.<br /><br />Now I read reports about Microsoft's dominance in the OS space and I just shrug and think "yeah I guess", while I myself have been shielded from the tyranny for nearly 2 years... Now when I run Windows, I look at it as some outmoded form of existence that I revisit now and again for nostalgia.<br /><br />Don't even talk to me about Vista.<br /><br />Last February, upon its release, I went out and bought a copy, thinking that as a technologist, I should know what it does and doesn't do. As an optimist, I figured it had to have some redeeming qualities. After loading it on my PC, I can say it was a pointless exercise bordering on utter disaster.<br /><br />I wanted to "experience" the Aero-glass features, so I bought a new $175 video card. I bought a new $200 300Gb hard drive so I could install Vista without imperiling my old XP installation. This was all a huge mistake. I ended up with my XP installed as a secondary drive, and a bunch of programs that wouldn't run. Accept or Deny?<br /><br />Then my Vista boot drive died, and the whole thing ended up as a pile on the floor with a Knoppix Live-CD stuffed in the DVD drive, acting like a life-raft on the Titanic, trying to tar+scp things off onto whatevner machine would take it. If I had a gun, I'd shoot the thing. It is dead, and Vista killed it as far as I am concerned.<br /><br />Now I keep my virtual machines on an external USB drive I can carry between my MacPro or my MacBook Pro (depending on where I am) and I am a lot happier.<br /><br />Bless you Steve, for finally coming around to Intel. It may not always be better, but at least it's what everybody else is using. Now when I hear about the latest stupid ideas from Microsoft, I can just shrug them off, secure in the knowledge that a) my Mac will work great, and b) I can run Linux or BSD or Solaris to do anything else.<br /><br />And I can even know that I can run Windows, if I absolutely must. For creative professionals (and by this I include everybody from artists to coders to database guys), the Mac is truly a gift to you. Enjoy it, appreciate it. If you are still on Windows or forcing yourself to use a Linux UI for ideological pride, it's time to move.<br /><br />Anyone with a creative bone in their body should be using today's Macs.Dave Troyhttp://www.blogger.com/profile/09594731243753943289noreply@blogger.com4tag:blogger.com,1999:blog-6909367658433794196.post-42851919386794046692007-10-06T08:11:00.000-07:002007-10-06T08:32:10.953-07:00MoMA NY Selects Twittervision & FlickrvisionYesterday, I received final confirmation that the Museum of Modern Art in New York has selected my mash-ups <A HREF="http://twittervision.com">twittervision.com</A> and <A HREF="http://flickrvision.com">flickrvision.com</A> for its 2008 exhibition <A HREF=http://www.moma.org/exhibitions/exhibitions.php?id=5632&ref=calendar>Design and the Elastic Mind</A>.<br /><br />I'm certainly very flattered to be included and have never considered myself to be an artist. I didn't seek out MoMA on this. I am just very, very happy to have an opportunity to participate in a small way in the ongoing dialog about what technology means for humanity. Crap. Now I sound like an artist.<br /><br />Incidentally, this means that twittervision.com and flickrvision.com are the first ever Ruby On Rails apps to be included in a major art exhibition. I already told DHH.<br /><br />Anyway, at RailsConf Europe a few weeks ago, Dave Thomas' keynote speech emphasized the role of software designers as artists. He said, "treat your projects as though they are artworks, and sign your name to them." Or pretty close to it. I think this is incredibly valuable advice for software designers today.<br /><br />We're past the days of using machines as amplifiers of our physical efforts. It's not enough to jam more features into code just so we can eliminate one more position on the assembly line. We're at a point where the machines can help amplify our imaginations.<br /><br />Today, creativity and imagination (what some folks are calling the right brain) are becoming the key drivers of software and design. With imagination, we can see around the corners of today's most pressing challenges. While technical skill is certainly valuable, if it's applied to the wrong problems, it's wasted effort.<br /><br />Creativity, imagination, and artistry help us identify the areas where we should put our efforts. They help us see things in new ways.<br /><br />Everywhere I turn (perhaps partly because I am a Rubyist), I hear discussions of Domain Specific Languages, and of framing our problems in the right grammars.<br /><br />This is hugely valuable because the creative part of our brain thinks in terms of semantics, grammars, and symbols. If we can't get the words right, our imaginations can't engage.<br /><br />Everything stays stuck in the left side of our brains when we have to jump through hoops to please some particular language or development environment.<br /><br />I hope you all will come out to see <b>Design and the Elastic Mind</b> when it opens at NYC MoMA, Feb 24 - May 12 2008. I'm not sure how we're going to present the sites but we're going to see if we can get some partners and sponsors involved to do something really beautiful.<br /><br />And again, thanks to MoMA for the selection. And here's to creativity, imagination, and artistry as the next big thing in software design!Dave Troyhttp://www.blogger.com/profile/09594731243753943289noreply@blogger.com5tag:blogger.com,1999:blog-6909367658433794196.post-78998898121022808942007-10-06T08:03:00.000-07:002007-10-06T08:39:15.707-07:00Adhearsion is Moving Forward in a Big Way!Over the next two weeks, Jay Phillips, Chad Fowler, Marcel Molina, Rich Kilmer, Ed Guy, Glenn Dalgliesh and myself are getting together to work on advancing <a href="http://adhearsion.com">Adhearsion</a>, the open source VoIP technology.<br /><br />For those of you who don't know about Adhearsion, it brings a simple, elegant grammar to the world of VoIP. It's an object-oriented DSL (domain specific language) written in Ruby. But that's what's going on underneath. Here's what's going on for you, the user:<br /><br /><pre><br /># This is an example extensions.rb file which<br /># would handle how calls are processed by<br /># Asterisk. This is all completely valid Ruby<br />internal {<br /> case extension<br /> when 100...200<br /> callee = User.find_by_extension extension<br /> unless callee.busy? then dial callee<br /> else<br /> voicemail extension<br /><br /> when 111 then exec :meetme<br /><br /> when 888 <br /> play weather_report('Dallas, Texas')<br /><br /> when 999<br /> play %w(a-connect-charge-of 22 <br /> cents-per-minute will-apply)<br /> sleep 2.seconds<br /> play 'just-kidding-not-upset'<br /> check_voicemail<br /> end<br />}<br /></pre><br /><br />Obviously this is much more palatable than what you might find in your average asterisk extensions.conf file.<br /><br />Chad, Marcel, and Rich are some of the biggest names in the Ruby & Rails communities. Ed Guy is a legend in Open Source telephony. Jay is the originator of Adhearsion. Glenn, Ed, Jay, and I all work together for the project's sponsor, Truphone. There is some thought that with all of us on the job, Adhearsion might just become the next big thing to come out of the Ruby community.<br /><br />We'll see about that; it could certainly happen. One thing that is for sure though is that our efforts should bring a level of beauty and clarity heretofore unrealized in the VoIP/telephony/collaboration world, and that <b>certainly</b> is a good thing.Dave Troyhttp://www.blogger.com/profile/09594731243753943289noreply@blogger.com2tag:blogger.com,1999:blog-6909367658433794196.post-13289980795487688502007-10-06T07:50:00.000-07:002007-10-06T08:00:22.088-07:00My Wife Is Julie, the 1974 American Girl Historical Character<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkaEybSwP-CbJlcXwvJWqAJ_7NY_V9LZ8Wa5eLPS1eVNv_EASUSh3q529lqpRCXjoOOBpQTC-caKsF33xhCo64uf-RgaVDZ_SrgVUdq8yxhqz2Kwv80VLeWz7qBTiMXkFXjbZLii2v_YY/s1600-h/92575_main_2.jpg"><img style="margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkaEybSwP-CbJlcXwvJWqAJ_7NY_V9LZ8Wa5eLPS1eVNv_EASUSh3q529lqpRCXjoOOBpQTC-caKsF33xhCo64uf-RgaVDZ_SrgVUdq8yxhqz2Kwv80VLeWz7qBTiMXkFXjbZLii2v_YY/s320/92575_main_2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5118236859583145602" /></a><br /><br />We were on vacation in San Francisco in July 2005 when my wife was asked to pose hanging off a cable car by some photographers from American Girl.<br /><br />In New York yesterday, we took our daughter to the American Girl store there and were greeted with these giant 7' tall posters. Jennifer immediately remembered the incident in San Francisco. The staff was amused and gave us a free poster. And I'm amused that she's the 1974 character who gets to say things like "Far Out."<br /><br />She looked up the illustrator, Robert Hunt, online. He's apparently a major illustrator in the business, having done the artwork for the Dreamworks logo (kid sitting on the moon) as well as a bunch of other major work. Anyway, he described his process very thoroughly, and it seems unlikely that her "likeness" was used, as that would have required a model release, etc.<br /><br />The team taking the photos was so emphatic (watch for it, it'll be you!) though and the overall likeness to the pose that day is so great that we think those shots were used for blocking out the design.<br /><br />We'll probably never know, but these little coincidences add a touch of magic to life.Dave Troyhttp://www.blogger.com/profile/09594731243753943289noreply@blogger.com0