<?xml version='1.0' encoding='windows-1252'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-3191291</id><updated>2008-05-02T16:07:20.152-07:00</updated><title type='text'>Coding In Paradise</title><link rel='alternate' type='text/html' href='http://codinginparadise.org/weblog/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default?start-index=26&amp;max-results=25'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://codinginparadise.org/weblog/atom.xml'/><author><name>Brad Neuberg</name></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>624</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3191291.post-6773123486955190284</id><published>2008-05-02T15:13:00.001-07:00</published><updated>2008-05-02T16:07:20.187-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coworking'/><title type='text'>Coworking Roots, Coworking on CBS, and Cubes and Crayons Blogging Panel</title><content type='html'>Some &lt;a href="http://coworking.pbwiki.com/"&gt;coworking&lt;/a&gt; updates as I actually cowork with some friends out in Oakland; what's nice is we are actually doing some of the &lt;a href="http://codinginparadise.org/coworking/"&gt;original ideas&lt;/a&gt; behind coworking. Any movement shifts and changes as it goes mainstream, dropping various aspects and picking up others, which is fine. However, one of the original ideas I had when I created coworking was to make it a bit more conscious around work. We've had checkins today, set goals, and asked for support in keeping them. Taken walks, did a silent lunch that was meditative, and more. I found with the original coworking space that folks didn't necessarily like the hippie aspect as much, but I do :) I wanted to pull some of the bohemian work atmosphere when I was at &lt;a href="http://esalen.org/"&gt;Esalen&lt;/a&gt; into a more traditional workspace.&lt;br /&gt;&lt;br /&gt;CBS has a nice news piece that is syndicated nationally on coworking:&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;center&gt;&lt;div id="viddlervideo-7914-479e7b84" class="viddlervideo"&gt;&lt;p&gt;&lt;a href="http://www.blogger.com/post-create.g?blogID=3191291#viddlervideo-7914-479e7b84" onclick="loadViddlerVideo('7914','479e7b84','player',437,370);" title="Click to play this video."&gt;&lt;img src="http://cdn-ll-84.viddler.com/e2/thumbnail_2_479e7b84.jpg" alt="Video thumbnail." height="370" width="437" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.blogger.com/post-create.g?blogID=3191291#viddlervideo-7914-479e7b84" onclick="loadViddlerVideo('7914','479e7b84','player',437,370);" return=""&gt;Click to play this video.&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/center&gt;&lt;p&gt;&lt;/p&gt;As the coworking meme continues to spread, its morphing into all sorts of interesting forms. The &lt;a href="http://www.cubesandcrayons.com/"&gt;Cubes &amp;amp; Crayons&lt;/a&gt; is a really unique idea around creating coworking space for adults and child-care for your kids. Its a great way to get out of the house and get work done without getting distracted by your kids + knowing your kids are nearby having fun and getting childcare. I'll be speaking at Cubes &amp;amp; Crayons on a &lt;a href="http://www.cubesandcrayons.com/workshops_events.jsp#blogshop"&gt;Blogging Basics panel happening soon&lt;/a&gt;. Here's the details, taken from their website:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Thursday, May 8 - Blogging Basics&lt;br /&gt;Registration deadline May 6 &lt;/strong&gt;&lt;br /&gt;7:00 - 7:30pm Cocktails and Networking&lt;br /&gt;7:30 - 9:00pm Workshop&lt;br /&gt;Are you interested in knowing more about the blogging phenomenon? Do you blog and are looking for inspiration and community? Come join us for a panel discussion with experts of the Blogosphere! Enjoy delicious desserts, meet our great panelists and have a fun evening! You will learn:&lt;br /&gt;* The many purposes of blogging&lt;br /&gt;* Blogging tips &amp;amp; tricks&lt;br /&gt;* Which are some of the best blogs&lt;br /&gt;* What to avoid when writing one&lt;br /&gt;* About the panelists' expertise (such as monetizing and promoting one's blog)&lt;br /&gt;&lt;strong&gt;Panelists include: &lt;/strong&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;Jill Asher &lt;/strong&gt;&lt;/em&gt;of SVMoms, is Partner and Co-founder, Silicon Valley Moms Group and mother of two daughters. In addition to SVmoms, Jill is a Human Resources consultant.&lt;br /&gt;&lt;em&gt;&lt;strong&gt;Stefania Pomponi Butler &lt;/strong&gt;&lt;/em&gt;of CityMama is a professional writer and blog editor/producer who covers style, food, pop culture, and parenting with a cheeky twist. She often speaks on blog-related topics.&lt;br /&gt;&lt;em&gt;&lt;strong&gt;Eric Case &lt;/strong&gt;&lt;/em&gt;currently is a freelancer at Vedana Consulting, is a very recent employee of Blogger, now owned by Google, having handled product management and developer relations.&lt;br /&gt;&lt;em&gt;&lt;strong&gt;Brad Neuberg &lt;/strong&gt;&lt;/em&gt;is an internationally recognized software inventor, engineer, and open source consultant. In addition, Brad Neuberg created coworking, an international grassroots movement to found a new kind of workspace for the self-employed. His blog is &lt;a href="http://codinginparadise.org/" target="_blank" class="main"&gt;http://codinginparadise.org/&lt;/a&gt;and he also writes for &lt;a href="http://gearsblog.blogspot.com/" target="_blank" class="main"&gt;http://gearsblog.blogspot.com/&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;Cost:&lt;/strong&gt; $25 or $40 for this &amp;amp; Build-A-Blog Workshop  on May 22 with Beth Blecherman of  TechMamas&lt;br /&gt;&lt;strong&gt;Reservations:&lt;/strong&gt; 650.323.2551 or &lt;a target="_blank" href="https://mail.google.com/mail?view=cm&amp;amp;tf=0&amp;amp;ui=1&amp;amp;to=contact@cubesandcrayons.com" class="main"&gt;contact@cubesandcrayons.com&lt;/a&gt;.</content><link rel='alternate' type='text/html' href='http://codinginparadise.org/weblog/2008/05/coworking-roots-coworking-on-cbs-and.html' title='Coworking Roots, Coworking on CBS, and Cubes and Crayons Blogging Panel'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3191291&amp;postID=6773123486955190284' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://codinginparadise.org/weblog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/6773123486955190284'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/6773123486955190284'/><author><name>Brad Neuberg</name></author></entry><entry><id>tag:blogger.com,1999:blog-3191291.post-4740699332811597908</id><published>2008-04-21T11:14:00.000-07:00</published><updated>2008-04-21T11:23:54.451-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><category scheme='http://www.blogger.com/atom/ns#' term='email missive'/><title type='text'>Travel Missive</title><content type='html'>Many years ago I traveled and lived abroad. I wrote a series of email missives that I sent out to friends and family. I thought I had lost them, but a friend of mine recently dredged them out of her email inbox. I thought it would be fun to share here; note the date, just a few days before September 11th 2001:&lt;br /&gt;&lt;br /&gt;September 5th, 2001&lt;br /&gt;&lt;br /&gt;Hi everyone. It's been quite awhile since I sent out an email missive.&lt;br /&gt;&lt;br /&gt;Right now I'm sitting in a small Japanese restaurant, drinking a draft Sapporo beer. Country music is playing in the restaurant; George Strait to be exact. I just can't get away from Texas. I'm typing on a small IBM ThinkPad I bought here in Japan. It's only sold in Japan, and is really tiny. Here's a picture of it:&lt;br /&gt;&lt;br /&gt;[image lost]&lt;br /&gt;&lt;br /&gt;My plan for the next few months (probably 6) is to go to Thailand, where I can live for really cheap (for about 500 U.S. dollars a month) and really well. I'm going to live on an island named Phuket (or possibly one named Ko Samui) and do open-source coding on this laptop and work on ideas. Here's a picture of Phuket from &lt;a href="http://www.phuket.com/" target="_blank"&gt;www.phuket.com&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;[image lost]&lt;br /&gt;&lt;br /&gt;It's always been a dream of mine to do something like this, just inventing in a beautiful location, and the affordableness of Thailand makes this possible. I'm also going to learn to speak Thai, and possibly get a volunteer job working with children. When my money begins to run out, I'm probably going to head back to Japan to teach English, which surprisingly nets alot of money. After working there for awhile, who knows how long, I hope to make enough money to afford traveling through Eastern Europe on the Trans-Siberian Railroad; who knows though, that's a long way in the future (probably more than a year).&lt;br /&gt;&lt;br /&gt;It's been about 2 months since I sent out my last email missive, so let me fill you in on what's been going on. Last month I was in Vietnam; this month I've been in Japan. After going into the Mekong Delta in Southern Vietnam, which I talked about in my last email missive, I partied for a few days in Ho Chi Minh City with the expat community. There are all sorts of bars there that the expats hang out at; one is even a themed Guns &amp;amp; Roses bar that was wild, crawling with prostitutes and burned out expats. In Ho Chi Minh City I bumped back into my Aussie mate Curtis who I met on the Mekong Delta tour, and we headed to a beach community named Mui Ne.&lt;br /&gt;&lt;br /&gt;Mui Ne was wonderful; there was no one there, unlike Nahtrang where everyone goes. Curtis and I stayed in a thatched hut that was partially open to the air, with mosquito nets, about 10 feet from the sea. The ocean was warm and wonderful.&lt;br /&gt;&lt;br /&gt;After Mui Ne, I headed to a town named Hoi An, which is in Central Vietnam. Not much was going on in Hoi An, so I headed to a town named Hue. I hired a motorcyclist to take me around the outskirts of Hoi An for a day, looking at different historical sites, which was fun.&lt;br /&gt;&lt;br /&gt;Riding between cities on the buses was a mix of the most interesting thing I did, one of the scariest, and partially the most difficult. The road conditions there are terrible; people drive like crazy. The worst journey was a 20 hour overnight trip from Hue to Hanoi; I hadn't eaten any dinner, so I was starving, and the bus driver never stopped for bathroom breaks, so I was dying. Worse, I had Montezuma's Revenge, so I really needed to go to the restroom. All of this for 20 hours, while simultaneously praying for my life due to how bad the driving was. That was probably one of the low-points of the trip.&lt;br /&gt;&lt;br /&gt;The thing that made the bus trips great, though, was looking out the window. Vietnam is really beautiful and wonderful to look at. I would see endless rice fields of a million different shades of green, with workers in conical hats bending over to tend the crops. Bustling cities would pass by, with the houses being what I can only describe as Communist Architecture. Houses can't be too wide there, due to a tax on the width of houses, so houses are really high and narrow. The rich ones have all sorts of French-like decorations on the outside, but most are still open to the air on the front! Some people simply live in thatched huts. All sorts of strange government buildings would pass by too, such as enclosures for the Red Army. In every town was a strange monument and graveyard to those North Vietnamese who fell in the 'American War' (as Vietnam calls the Vietnam War).&lt;br /&gt;&lt;br /&gt;The high-point of my trip to Vietnam was definitely meeting Son, a young man in his twenties who lives in Hanoi. Son knows English really well, and we quickly became friends. He took me out to meet his family in the Hanoi countryside. This was an experience that I will never forget for the rest of my life. Son took me on the back of his motorcycle deep into the country-side in Northern Vietnam; it took 2 hours to drive to his parent's place. We would be going 100 km/hour on the highway, and I would grab onto Son for dear life. As I was holding on, I would look out, and see rice fields rush by; motorcycles curving all around us; water buffalo tilling the field and playing in the flooded rice fields; and horse-drawn carts on the high-way. Monsoon rains would start to fall and drench us. In some of the towns the locals had never seen a foreigner, and crowds would form around me and people would just stare. Some corrupt police stopped us and demanded a pay-off because a foreigner was going too deep into the country-side without his passport.&lt;br /&gt;&lt;br /&gt;We finally reached his family's house. His father's home is completely self-sufficient. There is a pond where all their fish are caught. They had a small farm, and pigs and chickens. They even make their own wine from leechee fruit! The house is very rustic, small, and open to the air. His father and mother are beautiful. His mother is a math school teacher, and is proud and distinctive. The father is a retired former general of the North Vietnamese, with sparkling eyes and a big smile. He would take my hand and look me in the eyes, speaking Vietnamese that Son translated. We talked about the war and the future, and how Vietnam and America are now entwined and hold a strange attraction for each other, just like Japan and America. Sometimes the worst enemies end up becoming the best friends as times pass, since they have a history together. In the background a little baby kitten and large dog were playing with each other.&lt;br /&gt;&lt;br /&gt;I ate lunch with them on the ground, eating food they had grown fresh on the farm and cooked pig and chicken from their livestock. Son and I then took a siesta. This was definitely one of the best and most interesting days of my life, full of beautiful images and poignancy.&lt;br /&gt;&lt;br /&gt;One other event that was great was getting drunk with 2 North Vietnamese doctors in the middle of the day, in a seedy hidden restaurant while my other 2 friends I had met earlier were feasting on cooked dog (I didn't want to eat the shit; I could never look a dog in the eyes again). I didn't want to be rude and cause the doctors to lose face (and get in a fight in this place), so I pretty much threw down lots of rice wine and smoked from this strange pipe. I thought the pipe was tobacco at first, after smelling it, but after puffing on it I'm not really sure; again, I didn't want to get in a ruckus so I did as the Romans do. Since my stomach was empty, as I didn't want to eat at that place, the rice wine hit me really hard, and I was drunk off my arse, laughing and being stupid with these 2 forty-year old Hanoi doctors, the other residents in the restaurant, and the 2 expats I was with. That was a great experience too.&lt;br /&gt;&lt;br /&gt;I headed to Japan on September 7th, arriving into Tokyo. I was really glad to be leaving Vietnam, since I was craving air conditioning, movies, cleanliness, being able to drink the water, and being able to let my guard down with food. The month in Japan has been characterized by totally chilling out and not necessarily doing too much touristy stuff, really just sleeping late. I've also gotten sick here alot, which sucks. My first week I was sick as a dog with food poisoning, probably because I let my guard down the last few days in Hanoi in regards to food. I got sick with food poisoning again later, and puked on the train. I also got bronchitis the last two weeks, and am getting over it now. All of that has generally sucked, to say the least. I think my body wasn't used to air conditioning after being in Vietnam, which was why I got bronchitis, and I'm not sure why I got all the food poisoning. Oh well. I went to the hospital for both, just to make sure.&lt;br /&gt;&lt;br /&gt;I met my friends Rob and Sean here in Japan. Rob has been wonderful about letting me stay at his place outside Tokyo all month, and Sean was really good about setting up lots of stuff for us to do. He took us into Southern Japan to stay with a wonderful family he knows in Iwakuni. It was cool seeing how another rural family lives in a different Asian country, after seeing Son's family in Vietnam. The Nishimoro's, which were their name, were great to us. They took us to this great beautiful creek to go swimming, which was one of the highpoints here in Japan for me. The river was a perfect cool temperature, and a crystal aquamarine blue. The water was drinkable, and I would dive into the depths and drink the water. A perfect summer's day.&lt;br /&gt;&lt;br /&gt;The other high-point was actually one that most people would hate: being partially drunk, alone, and lost in Hiroshima late in the night with no place to stay. I went with my friend into Hiroshima to see the A-Bomb Memorial and Museum (which were a trip), and we went out to some of the expat bars there. My friend and I met two girls. He was lucky, and I wasn't, so I had to head off into Hiroshima at 1 in the morning to find our hotel. Japan doesn't really have street names, so there is no way to tell a cab-driver how to get to a place; it only has wide district names. I had a taxi driver take me to the district the hotel was in, and drop me off. The streets were completely empty; it was dark, and late at night. The thing that made it fun and exciting was that I was completely on my own, and just felt independent. I walked around for an hour, completely ready to just find a dark corner and fall asleep on the street. My Japanese skills rapidly improved, since I depended on them to survive in that occasion. I finally found my hotel, though, and didn't have to sleep on the street. I stayed at a place run by Quakers to educate people about nuclear proliferation, which was strange.&lt;br /&gt;&lt;br /&gt;Another fun thing happened while I was looking through the Lonely Planet guide for Japan. The Lonely Planet guide described this bizarre festival that takes place in a small town named Ogi in Southern Japan. All the 18 year olds in the town line up, and repeatedly rush the elders of the town to try to grab a gong. The elders have always repelled them for hundreds of years, and may people end up bloody and hurt. While this occurs, off-key flutes and drums play that Lonely Planet described as "like Tom Watts". Then, to top it off, lots of stuff is lit on fire and a huge spinning poll blows up with fireworks. I was like, damn, thats awesome, and then noticed that it was in two days, on September 18th [this date was wrong], not too far from me. I had to go. I decided to head off with Rob spontaneously to go see this. It turned out to be fun, but not quite as primal as I had imagined it to be. The music was certainly wierd though, and people did get bloody. The 'elders' were all other 18 year olds dressed in 'elder' stuff, like work outfits and authority clothes.&lt;br /&gt;&lt;br /&gt;I'll send out an email soon detailing all the funny stuff that is here. I recently bought a nice, cheap digital camera, so future email missives will have pictures. I was spending like 150 bucks a month to develop rolls of film, buy film, and ship the pictures back to the states, so I decided to just invest the money into a new camera that would save me money in the long run. By the way, Internet access is excellent in every country I've been to, so I can check my email every day, so send more email folks! I leave for Thailand on August 9th, and arrive in Bangkok. I'm not looking forward to Bangkok; its a big, smelly, noisy city; hopefully it will be interesting though, and I'll only have to stay there for awhile while I do some preparations there I need to do.</content><link rel='alternate' type='text/html' href='http://codinginparadise.org/weblog/2008/04/travel-missive.html' title='Travel Missive'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3191291&amp;postID=4740699332811597908' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://codinginparadise.org/weblog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/4740699332811597908'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/4740699332811597908'/><author><name>Brad Neuberg</name></author></entry><entry><id>tag:blogger.com,1999:blog-3191291.post-8240322837197699470</id><published>2008-04-21T07:57:00.000-07:00</published><updated>2008-04-21T07:59:32.794-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='web extension mechanisms'/><title type='text'>Evil Genius Project of the Week: NestedVM</title><content type='html'>&lt;a href="http://nestedvm.ibex.org/"&gt;This qualifies&lt;/a&gt; as an Evil Genius Project of the week. If it works its amazing:&lt;br /&gt;&lt;br /&gt;"NestedVM provides binary translation for Java Bytecode. This is done by having GCC compile to a MIPS binary which is then translated to a Java class file. Hence any application written in C, C++, Fortran, or any other language supported by GCC can be run in 100% pure Java with no source changes."&lt;br /&gt;&lt;br /&gt;Anyone play with this? How well does it work?</content><link rel='alternate' type='text/html' href='http://codinginparadise.org/weblog/2008/04/evil-genius-project-of-week-nestedvm.html' title='Evil Genius Project of the Week: NestedVM'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3191291&amp;postID=8240322837197699470' title='1 Comments'/><link rel='replies' type='application/atom+xml' href='http://codinginparadise.org/weblog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/8240322837197699470'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/8240322837197699470'/><author><name>Brad Neuberg</name></author></entry><entry><id>tag:blogger.com,1999:blog-3191291.post-7686219167146819881</id><published>2008-04-18T13:41:00.000-07:00</published><updated>2008-04-18T13:51:37.841-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open web'/><title type='text'>Wordpress Vs. Facebook</title><content type='html'>Wow, take a look at this graph showing unique visitors to both Facebook and Wordpress sites:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://avc.blogs.com/.shared/image.html?/photos/uncategorized/2008/04/18/fb_vs_wp.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://codinginparadise.org/weblog/uploaded_images/fb_vs_wp-733717.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This graph is important: the traffic to &lt;span style="font-style: italic;"&gt;decentralized&lt;/span&gt; Wordpress oriented sites are almost as numerous as the traffic to &lt;span style="font-style: italic;"&gt;centralized&lt;/span&gt; Facebook!&lt;br /&gt;&lt;br /&gt;I had thought that the trend the last two years was away from decentralized blogging and communication tools like Wordpress and towards centralized systems like Facebook, but it looks like both are happening at the same time. The deeper trend is towards personal communication platforms, whether these are centralized or decentralized.&lt;br /&gt;&lt;br /&gt;This is important, because it means that decentralized platforms stand a chance in the marketplace today, which is important both to me and the open web. Now here's the deeper question: can we make decentralized systems like Wordpress even easier, so that the traffic to those can go beyond centralized systems like Facebook? Maybe it will be a strange fusion of the two: maybe we can create a one-click system that will install Wordpress on Google App Engine, for example, so you can get started very quickly without having to provision storage. What do you think? How can we make decentralized systems as easy to use as more centralized ones so that we get the usability benefit of centralization with the freedom of decentralization (a theme you can see in the work I've been involved in over and over with things like &lt;a href="http://coworking.pbwiki.com"&gt;coworking&lt;/a&gt;, &lt;a href="http://codinginparadise.org/paperairplane"&gt;Paper Airplane&lt;/a&gt;, and more.)&lt;br /&gt;&lt;br /&gt;[Thanks to &lt;a href="http://avc.blogs.com/a_vc/"&gt;A VC&lt;/a&gt; for &lt;a href="http://avc.blogs.com/a_vc/2008/04/the-difference.html"&gt;highlighting this graph&lt;/a&gt; and the fact that Wordpress Vs. Facebook is doing pretty well]</content><link rel='alternate' type='text/html' href='http://codinginparadise.org/weblog/2008/04/wordpress-vs-facebook.html' title='Wordpress Vs. Facebook'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3191291&amp;postID=7686219167146819881' title='2 Comments'/><link rel='replies' type='application/atom+xml' href='http://codinginparadise.org/weblog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/7686219167146819881'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/7686219167146819881'/><author><name>Brad Neuberg</name></author></entry><entry><id>tag:blogger.com,1999:blog-3191291.post-7455934404193016722</id><published>2008-04-11T11:21:00.000-07:00</published><updated>2008-04-11T11:33:35.557-07:00</updated><title type='text'>OpenKODE</title><content type='html'>&lt;a href="http://www.khronos.org/openkode/"&gt;Anyone know what this is&lt;/a&gt;? Looks interesting:&lt;br /&gt;&lt;br /&gt;"OpenKODE is a royalty-free, open standard that combines a set of native APIs to increase source portability for rich media and graphics applications. OpenKODE reduces mobile platform fragmentation by introducing the cross-platform OpenKODE Core API for accessing operating system resources to minimize source changes when porting applications between Linux, Rex/Brew, Symbian, Windows CE, WIPI and RTOS-based platforms.  OpenKODE 1.0 also defines an advanced media-stack architecture by bringing together the OpenGL ES and OpenVG media APIs through EGL 1.3 and a set of EGL extensions to provide state-of-the-art acceleration for mixed 3D and vector 2D graphics.  Subsequent versions of OpenKODE will use upcoming versions of EGL to integrate synchronization and data processing of streaming media using the OpenSL ES and OpenMAX media APIs to provide accelerated video and audio functionality that is fully integrated with graphics processing."</content><link rel='alternate' type='text/html' href='http://codinginparadise.org/weblog/2008/04/openkode.html' title='OpenKODE'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3191291&amp;postID=7455934404193016722' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://codinginparadise.org/weblog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/7455934404193016722'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/7455934404193016722'/><author><name>Brad Neuberg</name></author></entry><entry><id>tag:blogger.com,1999:blog-3191291.post-7813840368008985720</id><published>2008-04-10T12:44:00.000-07:00</published><updated>2008-04-10T12:51:26.403-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gwt'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><title type='text'>An idea for Dojo from GWT land</title><content type='html'>Now that I'm at Google I've been getting a bit more exposed to &lt;a href="http://code.google.com/webtoolkit/"&gt;GWT&lt;/a&gt; (the Google Web Toolkit). I used to dismiss it because I'm a JavaScript hacker and GWT is in Java-land, but I've been learning some interesting things about it that I think could help in &lt;a href="http://dojotoolkit.org"&gt;Dojo&lt;/a&gt;-land if we adopted them.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://timepedia.blogspot.com/"&gt;Ray Cromwell&lt;/a&gt; rolled something called &lt;a href="http://ajaxian.com/archives/gquery-java-gwt-and-jquery-together"&gt;GQuery&lt;/a&gt;, which is basically &lt;a href="http://jquery.com/"&gt;JQuery&lt;/a&gt; inside of GWT. What is unique is you can do JQuery style selectors inside of Java. Dojo has this as well, with &lt;a href="http://dojotoolkit.org/node/336"&gt;dojo.query&lt;/a&gt;, but what Ray is doing is crazy. Because GWT gets compiled, he can turn something like this:&lt;br /&gt;&lt;br /&gt;"#foo"&lt;br /&gt;&lt;br /&gt;into this:&lt;br /&gt;&lt;br /&gt;document.getElementById("foo")&lt;br /&gt;&lt;br /&gt;in the source. &lt;a href="http://timepedia.blogspot.com/2008/04/work-on-gquery-progresses-comment-on.html"&gt;Here's Ray describing it&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;"GQuery is progressing nicely. I implemented all of CSS3 selectors by following ExtJS's DomQuery implementation, only I added the ability to parse at runtime as well as via a generator at compile time. The compile time generator turns a CSS selector into 100% inlined code. That is, a selector like "#foo", will turn into "return document.getElementById("foo");", no parsing step involved. I've still got a bunch of optimizations to make, add support for XPath and native getElementsByClassName, but even now working with the library in GWT is very cool. I just started looking at DomAssistant as well, to incorporate (i.e. steal) the best algorithms from each."&lt;br /&gt;&lt;br /&gt;One of the &lt;a href="https://www.blogger.com/comment.g?blogID=2515037436118935802&amp;amp;postID=7003932688014230894"&gt;comments&lt;/a&gt; sums up the benefits of this nicely:&lt;br /&gt;&lt;br /&gt;"You have an unfair advantage; since your selectors are compiled you can do any number of optimizations to them, and basically beat any other selector engine out there."&lt;br /&gt;&lt;br /&gt;GWT itself does some interesting optimizations like this around what code is sent to specific browsers. I'm seeing numbers that blow me away, that because you can only send down the code needed for a specific browser you can really slim things down. For example, something like Dojo GFX has code paths for IE (VML), Firefox (SVG), and Safari (Canvas). If we could just send which one you need then the code would be 1/3 the size.&lt;br /&gt;&lt;br /&gt;How can we get these kinds of benefits in Dojo? We already have a build time that runs through a JavaScript interpreter; can we start to do magic like this? The performance and size benefits I'm seeing in the GWT-world seem to indicate that it is useful.</content><link rel='alternate' type='text/html' href='http://codinginparadise.org/weblog/2008/04/idea-for-dojo-from-gwt-land.html' title='An idea for Dojo from GWT land'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3191291&amp;postID=7813840368008985720' title='6 Comments'/><link rel='replies' type='application/atom+xml' href='http://codinginparadise.org/weblog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/7813840368008985720'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/7813840368008985720'/><author><name>Brad Neuberg</name></author></entry><entry><id>tag:blogger.com,1999:blog-3191291.post-6740903056008703588</id><published>2008-04-10T10:23:00.000-07:00</published><updated>2008-04-10T10:57:41.656-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dojo storage'/><category scheme='http://www.blogger.com/atom/ns#' term='gears'/><category scheme='http://www.blogger.com/atom/ns#' term='open web'/><title type='text'>Dojo SQL Ported to New Environments + Russell Leggett's Fight for the Open Web Work</title><content type='html'>Two new bits of news today.&lt;br /&gt;&lt;br /&gt;First, &lt;a href="http://blog.eutech-ssii.com/"&gt;Jean-Baptiste Boisseau&lt;/a&gt; has done some &lt;a href="http://blog.eutech-ssii.com/2008/04/10/projet-sweetch-le-offline-pour-tous-des-aujourdhui/"&gt;great work&lt;/a&gt; porting Dojo SQL to work not only on Gears, but in a Java and AIR environment (and HTML 5 when that appears). His work is in alpha and &lt;a href="http://sweetch.eutech-ssii.com/?p=5&amp;amp;lang=en"&gt;can be seen here&lt;/a&gt;, including a &lt;a href="http://sweetch.eutech-ssii.com/demo/dojox/sql/demos/customers/customers.html"&gt;demo here&lt;/a&gt;. He has &lt;a href="http://sweetch.eutech-ssii.com/?lang=en"&gt;setup a blog&lt;/a&gt; as well to track his progress. Just in case you don't know Dojo SQL is an easy-to-use SQL layer for JavaScript. Under the covers it uses Gears to do the actual storage, and now Java if available thanks to Jean-Baptiste Boisseau.&lt;br /&gt;&lt;br /&gt;Second, Russell Leggett  was inspired by all the talk around the Open Web and Gears. Russell likes the Open Web, but wants to see JavaScript, HTML, CSS, etc. not just evolved but replaced by better layers that can help with web applications; he just wants to see these new layers remain open, just like HTML. I told him that Gears could potentially act as a way to deploy some of his ideas, and challenged him to write up his ideas and create a blog. Russell accepted the challenge and setup a new weblog, named &lt;a href="http://www.fightfortheopenweb.com/" target="_blank"&gt;www.fightfortheopenweb.com&lt;/a&gt;, as well as a Google Group &lt;a href="http://groups.google.com/group/fight-for-an-open-web"&gt;here&lt;/a&gt;. Join the group and join the discussion!&lt;br /&gt;&lt;br /&gt;Some excerpts from Russ's first few blog posts:&lt;br /&gt;&lt;br /&gt;"I believe there is an alternative solution [to Flash/Silverlight/AIR/etc].  I believe it is possible to fight fire with fire. If Flex/Silverlight/JavaFX threaten the open web, is there a way to compete on the same playing field? If the w3c technologies can't compete, can we take a different route? I propose that one very real solution to the problem would be to create an open source plugin technology to compete. It would allow a few things. First of all, it could ignore backwards compatibility because there would be nothing to be compatible to. Secondly, the cross browser issue would be resolved by being a plugin instead of a single browser implementation."&lt;br /&gt;&lt;br /&gt;"I recently had a conversation with &lt;a href="http://codinginparadise.org/" target="_blank"&gt;Brad Neuberg&lt;/a&gt; about the concept of using a plugin to have an Open Web competitor.  Brad suggested that this was precisely what Google Gears was trying to do (sort of).  In a &lt;a href="http://codinginparadise.org/weblog/2008/04/whats-open-web-and-why-is-it-important.html"&gt;recent post&lt;/a&gt; of his (which has since &lt;a href="http://ajaxian.com/archives/what-does-the-open-web-actually-mean"&gt;sparked&lt;/a&gt; a &lt;a href="http://www.sitepen.com/blog/2008/04/03/flash-silverlight-and-the-open-web/"&gt;conversation&lt;/a&gt; &lt;a href="http://blog.digitalbackcountry.com/?p=1375"&gt;across&lt;/a&gt; the &lt;a href="http://www.infoq.com/news/2008/04/flex-open-web"&gt;blogosphere&lt;/a&gt;), Brad discussed the definition of the term Open Web and its importance, but also how Gears can help to push the web forward. In our conversation, he asked, "If you were to add functionality to Gears that doesn't enhance the web's existing technologies, but rather creates new ones that live in the browser through Gears what would these look like?" The following was my response:"&lt;br /&gt;&lt;br /&gt;Russ wants better data-binding primitives and a refactoring of CSS to include variables, better layout management, and hooking into some kind of new component model for the web.&lt;br /&gt;&lt;br /&gt;Russ also isn't gung-ho about JavaScript 2:&lt;br /&gt;&lt;br /&gt;"I'm in the group of people that isn't totally gung ho about JS2.  I understand the motivation, but its looking like a bit of a kitchen sink language. I think JS needs some improvements, but I'm actually looking at Erlang for inspiration instead of Java and Python.  In my vision of a future JavaScript, I see a few things.  First of all, I think there are some functional language features that would be good to add considering JavaScript is already a very functional language. I would like to add overloaded functions that use matching and guards for differentiation. I would also like to steal some aspects of the big Erlang feature of concurrent processes.  Here, I think, is a perfect convergence with Gears.  The Gears worker pools are a lot like Erlang processes (which I'm guessing you knew).  No shared state, separate process, and no access to the dom.  As I'm sure you know, this can be extremely helpful when trying to stay secure doing mashups, offload intensive operations from the main thread, and communicate with the server. Additionally, I think that there needs to be a little more in the way of modularizing code, allowing private data members, and facilitating better code reuse.  I think prototypal inheritance and mixins are definitely better than classes for the language, and I'd like to add some more syntax to encourage them."&lt;br /&gt;&lt;br /&gt;As they say in open source, code rules, so I told Russ to grab the Gears source and build it. We can have lots of discussions about how the web should be, but nothing speaks like actually getting a Gears module out that rolls some of the ideas above, at least in prototype form.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;a href="http://code.google.com/p/google-gears/source/checkout"&gt;Download the Gears source&lt;/a&gt; yourself and &lt;a href="http://docs.google.com/View?docid=dc9jzs6p_30f8prhwdn&amp;amp;pli=1"&gt;build it yourself&lt;/a&gt; as well.&lt;br /&gt;&lt;/div&gt;</content><link rel='alternate' type='text/html' href='http://codinginparadise.org/weblog/2008/04/dojo-sql-ported-to-new-environments.html' title='Dojo SQL Ported to New Environments + Russell Leggett&apos;s Fight for the Open Web Work'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3191291&amp;postID=6740903056008703588' title='1 Comments'/><link rel='replies' type='application/atom+xml' href='http://codinginparadise.org/weblog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/6740903056008703588'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/6740903056008703588'/><author><name>Brad Neuberg</name></author></entry><entry><id>tag:blogger.com,1999:blog-3191291.post-8996710178454395832</id><published>2008-04-09T17:46:00.000-07:00</published><updated>2008-04-09T17:48:05.247-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='microformats'/><category scheme='http://www.blogger.com/atom/ns#' term='semantic web'/><category scheme='http://www.blogger.com/atom/ns#' term='yahoo'/><title type='text'>Yahoo Search + Microformats</title><content type='html'>Wow, somehow I missed this. Yahoo Search will &lt;a href="http://www.ysearchblog.com/archives/000527.html"&gt;support a whole boatload of microformat and semantic web technologies in the next iteration of its crawler&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;"In the coming weeks, we'll be releasing more detailed specifications that will describe our support of semantic web standards. Initially, we plan to support a number of &lt;a href="http://microformats.org/"&gt;microformats&lt;/a&gt;, including &lt;a href="http://microformats.org/wiki/hcard"&gt;hCard&lt;/a&gt;, &lt;a href="http://microformats.org/wiki/hcalendar"&gt;hCalendar&lt;/a&gt;, &lt;a href="http://microformats.org/wiki/hreview"&gt;hReview&lt;/a&gt;, &lt;a href="http://microformats.org/wiki/hatom"&gt;hAtom&lt;/a&gt;, and &lt;a href="http://microformats.org/wiki/xfn"&gt;XFN&lt;/a&gt;. Yahoo! Search will work with the web community to evolve the vocabulary framework for embedding structured data. For starters, we plan to support vocabulary components from &lt;a href="http://en.wikipedia.org/wiki/Dublin_Core"&gt;Dublin Core&lt;/a&gt;, &lt;a href="http://creativecommons.org/"&gt;Creative Commons&lt;/a&gt;, &lt;a href="http://www.foaf-project.org/"&gt;FOAF&lt;/a&gt;, &lt;a href="http://www.georss.org/"&gt;GeoRSS&lt;/a&gt;, &lt;a href="http://search.yahoo.com/mrss"&gt;MediaRSS&lt;/a&gt;, and others based on feedback. And, we will support &lt;a href="http://en.wikipedia.org/wiki/RDFa"&gt;RDFa&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Embedded_RDF"&gt;eRDF&lt;/a&gt; markup to embed these into existing HTML pages. Finally, we are announcing support for the &lt;a href="http://opensearch.org/"&gt;OpenSearch&lt;/a&gt; specification, with extensions for structured queries to deep web data sources."&lt;br /&gt;&lt;br /&gt;That's exciting.</content><link rel='alternate' type='text/html' href='http://codinginparadise.org/weblog/2008/04/yahoo-search-microformats.html' title='Yahoo Search + Microformats'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3191291&amp;postID=8996710178454395832' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://codinginparadise.org/weblog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/8996710178454395832'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/8996710178454395832'/><author><name>Brad Neuberg</name></author></entry><entry><id>tag:blogger.com,1999:blog-3191291.post-5724712675054861957</id><published>2008-04-09T16:42:00.000-07:00</published><updated>2008-04-09T16:46:07.245-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openid'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='google app engine'/><title type='text'>OpenID + Google App Engine</title><content type='html'>Nice; &lt;a href="http://ryan.barrett.name/"&gt;Ryan Barrett&lt;/a&gt; created an &lt;a href="http://openid.net/"&gt;OpenID&lt;/a&gt; provider already in the &lt;a href="http://code.google.com/appengine/"&gt;Google App Engine&lt;/a&gt;. This means you can use this to sign into OpenID enabled sites, while using Google App Engine to scale the provider. &lt;a href="http://appgallery.appspot.com/about_app?app_id=agphcHBnYWxsZXJ5chMLEgxBcHBsaWNhdGlvbnMYrwIM"&gt;See the details here&lt;/a&gt;.</content><link rel='alternate' type='text/html' href='http://codinginparadise.org/weblog/2008/04/openid-google-app-engine.html' title='OpenID + Google App Engine'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3191291&amp;postID=5724712675054861957' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://codinginparadise.org/weblog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/5724712675054861957'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/5724712675054861957'/><author><name>Brad Neuberg</name></author></entry><entry><id>tag:blogger.com,1999:blog-3191291.post-5651986668095397226</id><published>2008-04-07T14:04:00.000-07:00</published><updated>2008-04-07T14:08:20.585-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gears'/><title type='text'>Gears Talks at Google I/O</title><content type='html'>Hi folks; I'm going to be talking about &lt;a href="http://gears.google.com"&gt;Gears&lt;/a&gt; this spring at &lt;a href="http://code.google.com/events/io/"&gt;Google I/O&lt;/a&gt; in San Francisco. I'll be helping to run a codelab taking you through Gears and &lt;a href="http://codinginparadise.org/weblog/2008/02/pubtools-offline-enable-content-in.html"&gt;PubTools&lt;/a&gt;, and showing you the dark arts of cross-domain mashups using Gears. There are also some cool talks on building offline architectures from the folks that brought you offline Google Docs.  Aaron Boodman will be talking about how Gears helps get HTML 5 out.&lt;br /&gt;&lt;br /&gt;In case you don't know, Google I/O is a two-day developer extravaganza focused on the web and Googley APIs, such as OpenSocial, Android, etc.</content><link rel='alternate' type='text/html' href='http://codinginparadise.org/weblog/2008/04/gears-talks-at-google-io.html' title='Gears Talks at Google I/O'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3191291&amp;postID=5651986668095397226' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://codinginparadise.org/weblog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/5651986668095397226'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/5651986668095397226'/><author><name>Brad Neuberg</name></author></entry><entry><id>tag:blogger.com,1999:blog-3191291.post-1473703848448022102</id><published>2008-04-04T16:27:00.001-07:00</published><updated>2008-04-04T16:28:24.354-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><title type='text'>window.crypto</title><content type='html'>I never knew there were crypto abilities in Gecko-based browsers. There is evidently a window.crypto object, which is accessible:&lt;br /&gt;&lt;p style="font-style: italic;"&gt;Mozilla defines a special JavaScript object to allow web pages access to certain cryptographic related services. These services are a balance between the functionality web pages need, and the requirement to protect users from malicious web sites. Most of these services are available via the JavaScript &lt;a href="http://developer.mozilla.org/en/docs/DOM:window" title="DOM:window"&gt;window&lt;/a&gt; object as &lt;code&gt;window.crypto&lt;/code&gt;. For instance, to obtain a ten byte random number using the cryptographic engine, simply call: &lt;/p&gt; &lt;pre style="font-style: italic;"&gt;var myrandom = window.crypto.random(10);&lt;br /&gt;&lt;/pre&gt; &lt;p style="font-style: italic;"&gt;Services are provided to enable: smart card events, generating certificate requests, importing user certs, generating random numbers, logging out of your tokens, and signing text. &lt;/p&gt;&lt;a href="http://developer.mozilla.org/en/docs/JavaScript_crypto"&gt;More details here.&lt;/a&gt;</content><link rel='alternate' type='text/html' href='http://codinginparadise.org/weblog/2008/04/windowcrypto.html' title='window.crypto'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3191291&amp;postID=1473703848448022102' title='2 Comments'/><link rel='replies' type='application/atom+xml' href='http://codinginparadise.org/weblog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/1473703848448022102'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/1473703848448022102'/><author><name>Brad Neuberg</name></author></entry><entry><id>tag:blogger.com,1999:blog-3191291.post-6076277214317264688</id><published>2008-04-01T11:40:00.001-07:00</published><updated>2008-04-01T23:20:36.139-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='gears'/><category scheme='http://www.blogger.com/atom/ns#' term='open web'/><title type='text'>What Is the Open Web and Why Is It Important?</title><content type='html'>&lt;div id="oj.n"&gt;&lt;b&gt;&lt;br /&gt;What is the Open Web?&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;Folks toss the term "Open Web" around a bunch, but what exactly is it? Is the Open Web HTTP, HTML, JavaScript, etc., or is it something deeper? Rather than a laundry list of technologies the Open Web is a set of philosophies. These philosophies include:  &lt;ul id="o9bl"&gt;&lt;li id="a5bq"&gt;&lt;span id="bwyt" style="font-weight: bold;"&gt;Decentralization&lt;/span&gt; - Rather than controlled by one entity or centralized, the web is decentralized -- anyone can create a web site or web service. Browsers can work with millions of entities, rather than tying into one location. It's not the Google or Microsoft Web, but rather simply the web, an open system that anyone can plug into and create information at the end-points.&lt;/li&gt;&lt;li id="y7ph"&gt;&lt;span id="qj9g" style="font-weight: bold;"&gt;Transparency&lt;/span&gt; - An Open Web should have transparency at all levels. This includes being able to view the source of web pages; having human-readable network identifiers, such as URLs; and having clear network entry points, such as HTTP and REST exposes.&lt;/li&gt;&lt;li id="xuao"&gt;&lt;span id="qa9s" style="font-weight: bold;"&gt;Hackability&lt;/span&gt; - It should be easy to lash together and script the different portions of this web. MySpace, for example, allows users to embed components from all over the web; Google's AdSense, another example, allows ads to be integrated onto arbitrary web pages. What would you like to hack together, using the web as a base?&lt;/li&gt;&lt;li id="aizw"&gt;&lt;span id="r-.8" style="font-weight: bold;"&gt;Openness&lt;/span&gt; - Whether the protocols used are &lt;a title="de facto" href="http://en.wikipedia.org/wiki/De_facto" id="d.o2"&gt;&lt;/a&gt;&lt;a title="de facto or de-jure" href="http://aiimstandardswatch.typepad.com/aiim_standards_watch/2007/05/defacto_vs_deju.html" id="tcf3"&gt;de facto or de-jure&lt;/a&gt;, they should either be documented with open specifications or open code. Any entity should be able to implement these standards or use this code to hook into the system, without penalty of patents, copyright of standards, etc.&lt;/li&gt;&lt;li id="gpf2"&gt;&lt;span id="fon1" style="font-weight: bold;"&gt;From Gift Economies to Free Markets&lt;/span&gt; - The Open Web should support extreme &lt;a title="gift economies" href="http://en.wikipedia.org/wiki/Gift_economy" id="v-t."&gt;gift economies&lt;/a&gt;, such as open source and Wikis, all the way to traditional free market entities, such as Amazon.com and Google. I call this Freedom of Social Forms; the tent is big enough to support many forms of social and economic organization, including ones we haven't imagined yet.&lt;/li&gt;&lt;li id="kdb2"&gt;&lt;span id="y1yh" style="font-weight: bold;"&gt;Third-Party Integration&lt;/span&gt; - At all layers of the system third-parties should be able to hook into the system, whether creating web browsers, web servers, web services, etc.&lt;/li&gt;&lt;li id="nkw3"&gt;&lt;span id="wo-8" style="font-weight: bold;"&gt;Third-Party Innovation&lt;/span&gt; - Parties should be able to innovate and create without asking the powers-that-be for permission.&lt;/li&gt;&lt;li id="vb0y"&gt;&lt;span id="cgjs" style="font-weight: bold;"&gt;Civil Society and Discourse&lt;/span&gt; - An open web promotes both many-to-many and one-to-many communication, allowing for millions of conversations by millions of people, across a range of conversation modalities.&lt;/li&gt;&lt;li id="b8o2"&gt;&lt;span id="n8q." style="font-weight: bold;"&gt;Two-Way Communication&lt;/span&gt; - An Open Web should allow anyone to assume three different roles: Readers, Writers, and Code Hackers. Readers read content, Writers write content, and Code Hackers hack new network services that empower the first two roles.&lt;/li&gt;&lt;li id="kv_e"&gt;&lt;span id="m6sk" style="font-weight: bold;"&gt;End-User Usability and Integration&lt;/span&gt; - One of the original insights of the web was to bind all of this together with an easy to use web browser that was integrated for ease of use, despite the highly decentralized nature of the web. The Open Web should continue to empower the mainstream rather than the tech elite with easy to use next generation browsers that are highly usable and integrated despite having an open infrastructure. Open should not mean hard to use. Why can't we have the design brilliance of Steve Jobs coupled with the geek openness of Steve Wozniak? Making them an either/or is a false dichotomy.&lt;/li&gt;&lt;/ul&gt; Notice something very important; at no time above did I bind the Open Web to a particular set of technologies. Today the above philosophy is instantiated using a particular set of technologies, including URLs, HTTP, HTML, CSS, JavaScript, etc. However, if we define the Open Web in terms of these technologies, then we risk losing sight of what makes the web special and being able to have the intellectual nimbleness to evolve the infrastructure of the web. For example, we can and should evolve better layout languages than CSS, better document formats than HTML, etc., especially if we want the web to survive as a long-term social institution and public good, similar to the electricity grid, public-water systems, etc. We will be fighting yesterdays battle while allowing new, proprietary technologies to take over if we focus on technologies rather than philosophy. If we take the long term view, how can we give the web an open enough infrastructure to evolve over time and meet each generations needs, while maintaining its structure enough to actually mean something and stay true to its promise, similar to the U.S. Constitution?&lt;br /&gt;&lt;br /&gt;&lt;div id="p31y"&gt;&lt;b&gt;Why does the Open Web matter?&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;The Open Web is like something from an Arthur C. Clarke science fiction story: its a globe spanning, hypertext network containing billions of documents, conversations, and applications, used by a huge cross section of society. Who would have thought it ever would have been successful or stayed as open as it has? It's not controlled by any one government or company. Our historical closeness to the web creates a kind of myopia, where we can't see how amazing it is. It's a billion Library of Alexandria's dropped into our laps.&lt;br /&gt;&lt;br /&gt;&lt;a title="Douglas Engelbart" href="http://en.wikipedia.org/wiki/Douglas_Engelbart" id="l4.t"&gt;Douglas Engelbart&lt;/a&gt;, father of much of what we have in the computer industry, including the mouse, hypertext, and groupware, thought that computers would become as fundamental to humanity as the development of writing and language have been. Language is probably only about forty-thousand years old, while writing is only about eight-thousand years old. If you pull back and take the larger view, the web and computers are part of a grand development playing out over decades around new tools for communication. Writing and language have fundamentally changed our sense of self, with positive and negative ramifications; computers and the web hold the same promise, though it will take decades for this to play out. &lt;br /&gt;&lt;br /&gt;If the web and computers hold this promise, its important to keep the resulting system as open and accessible as possible. Do we want a system that devolves into something like Ancient Egypt, with an authoritarian force controlling and centralizing the water supply? Many archaeologists believe that deep control of access to water, literally something required for life, lead to the longest known authoritarian civilization in history, lasting for thousands of un-broken years. For example, what if the pencil and paper had never escaped the grasp of the Church? If we can keep the open web nimble and open, it can set the stage to fuel further innovations and inventions, just as writing and language gave rise to books, social polities, etc.&lt;br /&gt;&lt;br /&gt;&lt;div id="gxke"&gt;&lt;b&gt;How Can We Support the Open Web?&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;If we agree that the Open Web is important, how do we create a way to update the web and keep it relevant? The U.S. Constitution, for example, includes &lt;a title="special provisions to evolve itself" href="http://en.wikipedia.org/wiki/Article_Five_of_the_United_States_Constitution" id="bwyz"&gt;special provisions to evolve itself&lt;/a&gt; and stay relevant. Even with its warts, the U.S. is now the world's oldest and continuous republic. &lt;br /&gt;&lt;br /&gt;The web's existing update mechanisms just don't work. It takes years for new features to go from proposal to show up across enough browsers to be used consistently; this is a recipe for fail if we want the web to exist as a long-term entity, rather than a one-hit wonder. &lt;br /&gt;&lt;br /&gt;I joined Google to help with a project known as &lt;a title="Gears" href="http://gears.google.com/" id="dma4"&gt;Gears&lt;/a&gt;. Gears is an open source plug-in that teaches current web browsers new tricks. Gears is a clever way to raise the bar cross-browser and cross-platform, today, running inside of Firefox and Internet Explorer on Windows, Mac OS X, and Linux. No more waiting years for features to show up across all browsers and platforms. &lt;br /&gt;&lt;br /&gt;I want to look back five years from now and say that I worked with the community to build an open source update mechanism for the web. Why can't we rev the base infrastructure of the web much quicker, plus create more robust, open extension points along the entire web stack, ala &lt;a title="Greasemonkey" href="http://en.wikipedia.org/wiki/Greasemonkey" id="x73j"&gt;Greasemonkey&lt;/a&gt;? Is Gears the answer to this? I'm not sure, but its the best answer we have today. Gears is a great way to get the conversation started, plus get &lt;a title="HTML 5" href="http://www.w3.org/html/wg/html5/" id="qtfl"&gt;HTML 5&lt;/a&gt; out to today's browsers. &lt;br /&gt;&lt;br /&gt;On a more prosaic level, Gears gets the following features into today's browsers without waiting years, ready to use by web devs right now:  &lt;ul id="w9xf"&gt;&lt;li id="iou_"&gt;A real embedded relational database (SQLite) for web sites&lt;/li&gt;&lt;li id="q6:i"&gt;Client-side full text search&lt;/li&gt;&lt;li id="h:eb"&gt;Thread-like execution for JavaScript&lt;/li&gt;&lt;li id="e3pc"&gt;Offline web applications&lt;/li&gt;&lt;li id="yk:e"&gt;Secure and fast cross-domain mashups&lt;/li&gt;&lt;li id="uv6r"&gt;Desktop shortcuts&lt;/li&gt;&lt;li id="fmwl"&gt;Better web APIs for mobile devices&lt;/li&gt;&lt;li id="cags"&gt;and more.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;[Disclosure: I work with the Gears team]</content><link rel='alternate' type='text/html' href='http://codinginparadise.org/weblog/2008/04/whats-open-web-and-why-is-it-important.html' title='What Is the Open Web and Why Is It Important?'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3191291&amp;postID=6076277214317264688' title='4 Comments'/><link rel='replies' type='application/atom+xml' href='http://codinginparadise.org/weblog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/6076277214317264688'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/6076277214317264688'/><author><name>Brad Neuberg</name></author></entry><entry><id>tag:blogger.com,1999:blog-3191291.post-3034791001943259808</id><published>2008-03-27T13:22:00.001-07:00</published><updated>2008-03-27T13:22:39.266-07:00</updated><title type='text'>Cringe Factor</title><content type='html'>This is my "makes you cringe" video for the day:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;object width="420" height="339"&gt;&lt;param name="movie" value="http://www.dailymotion.com/swf/xsdji" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;embed src="http://www.dailymotion.com/swf/xsdji" type="application/x-shockwave-flash" width="420" height="339" allowFullScreen="true" allowScriptAccess="always"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.dailymotion.com/swf/xsdji"&gt;Rick Astley - Never Gonna Give You Up&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;i&gt;by &lt;a href="http://www.dailymotion.com/trashfan"&gt;trashfan&lt;/a&gt;&lt;/i&gt;&lt;/div&gt;</content><link rel='alternate' type='text/html' href='http://codinginparadise.org/weblog/2008/03/cringe-factor_27.html' title='Cringe Factor'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3191291&amp;postID=3034791001943259808' title='1 Comments'/><link rel='replies' type='application/atom+xml' href='http://codinginparadise.org/weblog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/3034791001943259808'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/3034791001943259808'/><author><name>Brad Neuberg</name></author></entry><entry><id>tag:blogger.com,1999:blog-3191291.post-3030586032436014239</id><published>2008-03-27T11:01:00.000-07:00</published><updated>2008-03-27T11:11:05.833-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gears'/><category scheme='http://www.blogger.com/atom/ns#' term='open web'/><title type='text'>An Update Mechanism for the Web, or N + 1</title><content type='html'>Alex Russell recently had a great post called "&lt;a href="http://alex.dojotoolkit.org/?p=661"&gt;Progress is N+1&lt;/a&gt;". An excerpt:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;So as webdevs, we must be canny enough to find a way to [do] "better" which doesn't put all of our eggs in any particular basket. Every browser that we depend on either needs an open development process or it needs to have a public plan for N+1. The goal is to ensure that the market knows that there is momentum and a vehicle+timeline for progress. When that's not possible or available, it becomes incumbent on us to support alternate schemes to rev the web faster. Google Gears is our best hope for this right now, and at the same time as we’re encouraging browser venders to do the right thing, we should also be championing the small, brave Open Source team that is bringing us a viable Plan B. Every webdev should be building Gear-specific features into their app today, not because Gears is the only way to get something in an app, but because in lieu of a real roadmap from Microsoft, Gears is our best chance at getting great things into the fabric of the web faster. If the IE team doesn't produce a roadmap, we'll be staring down a long flush-out cycle to replace it with other browsers. The genius of Gears is that it can augment existing browsers instead of replacing them wholesale. Gears targets the platform/product split and gives us a platform story even when we're neglected by the browser vendors.&lt;br /&gt;&lt;br /&gt;Gears has an open product development process, an auto-upgrade plan, and a plan for N+1.&lt;/blockquote&gt;I posted a comment there that I want to replicate:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Alex, great post. This is why I joined Google and the Gears team. I believe in the open web and see Gears as a very clever solution to help get us out of the impasse we are all in as web devs. I'd like to look back five years from now and see how we, as a community, constructed an open source update mechanism for the web that cuts cross-browser and cross-platform, giving us leverage to move the web forward and rev it much faster than we have now. Gears is the closest to this we have today. As we say in open source, code rules, so drop on by Gears and contribute Gears modules that make this happen (http://gears.google.com). Want to see better 2D vector graphics show up cross browser that you can use today? Bake one into Gears.&lt;br /&gt;&lt;br /&gt;Just in case you don't know about Gears or what it has today here's some more info:&lt;br /&gt;&lt;br /&gt;Gears is an open source plug-in that teaches current web browsers new tricks. Gears is a clever way to raise the bar cross-browser and cross-platform, today, running inside of Firefox and Internet Explorer on Windows, Mac OS X, and Linux. No more waiting years for features to show up across all browsers and platforms. APIs include: A real embedded relational database (SQLite) for web sites; client-side full text search; threads for JavaScript; offline web applications; secure and fast cross-domain mashups; desktop shortcuts; mobile devices; and more.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I would add to the comment above and say that Gears, if we can get it embraced by the web dev community itself, means we can finally be in charge of our own destiny! Lets get an update channel into the web itself, vetted by the users and developers of the web itself.</content><link rel='alternate' type='text/html' href='http://codinginparadise.org/weblog/2008/03/update-mechanism-for-web.html' title='An Update Mechanism for the Web, or N + 1'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3191291&amp;postID=3030586032436014239' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://codinginparadise.org/weblog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/3030586032436014239'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/3030586032436014239'/><author><name>Brad Neuberg</name></author></entry><entry><id>tag:blogger.com,1999:blog-3191291.post-7091538369751821186</id><published>2008-03-27T10:51:00.000-07:00</published><updated>2008-03-27T10:53:06.457-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><title type='text'>And throw in the kitchen sink</title><content type='html'>Whow, this is just gross. I found out that SVG includes &lt;a href="http://www.w3.org/TR/2004/WD-SVG12-20040510/#fileupload"&gt;file upload&lt;/a&gt; and &lt;a href="http://www.w3.org/TR/2004/WD-SVG12-20040510/#rawsocket"&gt;socket capability&lt;/a&gt;; if thats not bloat I don't know what is. I like SVG, but, um, file uploading and socket abilities in that spec? Its about vector graphics folks!</content><link rel='alternate' type='text/html' href='http://codinginparadise.org/weblog/2008/03/and-throw-in-kitchen-sink.html' title='And throw in the kitchen sink'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3191291&amp;postID=7091538369751821186' title='2 Comments'/><link rel='replies' type='application/atom+xml' href='http://codinginparadise.org/weblog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/7091538369751821186'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/7091538369751821186'/><author><name>Brad Neuberg</name></author></entry><entry><id>tag:blogger.com,1999:blog-3191291.post-6476857608518201565</id><published>2008-03-27T09:49:00.000-07:00</published><updated>2008-03-27T10:13:45.681-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gears'/><title type='text'>Interview with Dimitri Glazkov</title><content type='html'>&lt;a href="http://glazkov.com/blog/"&gt;Dimitri Glazkov&lt;/a&gt;, a prominent member of the Gears community, &lt;a href="http://netsquared.org/blog/nateritter/building-web-we-can-love-interview-dimitry-glazkov"&gt;has a nice interview out&lt;/a&gt;. Some nice excerpts:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;I am a software engineer at a company in Birmingham, AL, developing a content management engine for higher education and government Web sites across the country. My passion is building a better Web. A while back, I became convinced that a better Web starts with _not hating the Web_. And so began my quest into semantic markup, microformats, REST, and everything around them.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;This part is so right on:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;The Web has been and always will be defined by openness. Participation and social networking are just its logical extensions. It's pretty clear that the next frontier will have something to do with breaking down the barriers, imposed, knowingly or not, by the first generation of the social networking sites. The technology will have to play an important role in that charge. OpenID and OAuth are steadily gaining strength, and I am sure we'll start seeing the next generation of sites that value and appreciate user's freedom as well respect of content ownership. Also, as new features demand new capabilities, the browser becomes the weakest link. Looking at HTML5 spec and Javascript 2, my bet is on that changing really soon.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;And of course the obligatory Gears shout-out:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;NR: Do you have any current or future projects you're working on you'd like to share with us?&lt;br /&gt;&lt;br /&gt;DG: Gears. That's an open-source project, led by Google, which aims to both level and elevate the playing field for Web developers, and allow them to step beyond the today's line in the sand. I am proud to be a part of the effort that's as open and pioneering as Google Gears.&lt;br /&gt;&lt;br /&gt;NR: What does Google Gears let us do today that could help, say, Beth Kanter, do a better job of fund raising? How does it enable us to change the world?&lt;br /&gt;&lt;br /&gt;DG: Gears could allow Twitter to finally build a site that handles traffic more gracefully by offloading some of the work onto the client, rather than keeping it all on the melting-hot server side.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Dimitri's been backing his statements up with code, helping out with creating an HTML 5 database implementation for Gears known as &lt;a href="http://code.google.com/p/google-gears/wiki/Database2API"&gt;Database2&lt;/a&gt;.</content><link rel='alternate' type='text/html' href='http://codinginparadise.org/weblog/2008/03/interview-with-dimitri-glazkov.html' title='Interview with Dimitri Glazkov'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3191291&amp;postID=6476857608518201565' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://codinginparadise.org/weblog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/6476857608518201565'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/6476857608518201565'/><author><name>Brad Neuberg</name></author></entry><entry><id>tag:blogger.com,1999:blog-3191291.post-3230243986758358232</id><published>2008-03-26T18:17:00.000-07:00</published><updated>2008-04-01T10:04:34.370-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dojo storage'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo offline toolkit'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><title type='text'>Updated Dojo Storage ZIP file + Demos</title><content type='html'>[Updated with correct ZIP file download link]&lt;br /&gt;&lt;br /&gt;The ZIP file I put up for the new release of Dojo Storage was broken. &lt;a href="http://codinginparadise.org/projects/dojo_storage/release/dojo-storage-03-26-2008.zip"&gt;Here is a new one&lt;/a&gt; with the critical bug fixed (basically the test file did not point to the right location). Also, I'm now hosting the new Dojo Storage release on my web server so you can play with the &lt;a href="http://codinginparadise.org/projects/dojo_storage/release/storage-sdk/dojox/storage/tests/test_storage.html"&gt;testing file here&lt;/a&gt; and the &lt;a href="http://codinginparadise.org/projects/dojo_storage/release/storage-sdk/dojox/storage/demos/helloworld.html"&gt;Hello World demo here&lt;/a&gt; to get a taste of Dojo Storage without having to download things yourself. Note that this is based on Dojo 1.1 and is a pre-release, since Dojo 1.1 will go out Real Soon Now (tm) but is not out yet. Thanks to &lt;a href="http://www.andrewwooldridge.com/blog/2008/03/ibrpg-update-fighting-yui-dragons.html"&gt;Andrew Woolridge for pointing out&lt;/a&gt; that things were broken.</content><link rel='alternate' type='text/html' href='http://codinginparadise.org/weblog/2008/03/updated-dojo-storage-zip-file-demos.html' title='Updated Dojo Storage ZIP file + Demos'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3191291&amp;postID=3230243986758358232' title='2 Comments'/><link rel='replies' type='application/atom+xml' href='http://codinginparadise.org/weblog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/3230243986758358232'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/3230243986758358232'/><author><name>Brad Neuberg</name></author></entry><entry><id>tag:blogger.com,1999:blog-3191291.post-7050024343844361295</id><published>2008-03-25T11:19:00.000-07:00</published><updated>2008-03-25T11:22:02.212-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pubtools'/><category scheme='http://www.blogger.com/atom/ns#' term='gears'/><title type='text'>New Minor Release of Gears PubTools</title><content type='html'>I've put up a new minor release of &lt;a href="http://code.google.com/p/gears-pubtools/"&gt;Gears PubTools&lt;/a&gt; that fixes a bug. &lt;a href="http://gears-pubtools.googlecode.com/files/pubtools-2008-03-25.zip"&gt;You should grab it&lt;/a&gt; and replace your own instance with this since the bug fix is for creating shortcuts with the latest release of &lt;a href="http://gears.google.com"&gt;Gears&lt;/a&gt;. Learn more about &lt;a href="http://codinginparadise.org/weblog/2008/02/pubtools-offline-enable-content-in.html"&gt;Gears PubTools&lt;/a&gt;.</content><link rel='alternate' type='text/html' href='http://codinginparadise.org/weblog/2008/03/new-minor-release-of-gears-pubtools.html' title='New Minor Release of Gears PubTools'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3191291&amp;postID=7050024343844361295' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://codinginparadise.org/weblog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/7050024343844361295'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/7050024343844361295'/><author><name>Brad Neuberg</name></author></entry><entry><id>tag:blogger.com,1999:blog-3191291.post-1523860442630942393</id><published>2008-03-25T10:47:00.000-07:00</published><updated>2008-03-25T10:48:46.803-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sandbox suites'/><category scheme='http://www.blogger.com/atom/ns#' term='coworking'/><title type='text'>Coworking Away</title><content type='html'>I'm working today from Sandbox Suites, a &lt;a href="http://coworking.pbwiki.com"&gt;coworking&lt;/a&gt; space in San Francisco. &lt;a href="http://sandboxsuites.com"&gt;Sandbox Suites&lt;/a&gt; is really impressive; check out their web site to see pics.</content><link rel='alternate' type='text/html' href='http://codinginparadise.org/weblog/2008/03/coworking-away.html' title='Coworking Away'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3191291&amp;postID=1523860442630942393' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://codinginparadise.org/weblog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/1523860442630942393'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/1523860442630942393'/><author><name>Brad Neuberg</name></author></entry><entry><id>tag:blogger.com,1999:blog-3191291.post-1126673425160751422</id><published>2008-03-16T02:07:00.000-07:00</published><updated>2008-03-16T02:10:03.623-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='internet explorer'/><category scheme='http://www.blogger.com/atom/ns#' term='dhtml'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='hackery'/><category scheme='http://www.blogger.com/atom/ns#' term='gears'/><category scheme='http://www.blogger.com/atom/ns#' term='browser'/><title type='text'>Internet Explorer Binary Behaviors in .NET</title><content type='html'>Wow, &lt;a href="http://www.ddj.com/windows/184416704"&gt;I didn't realize that you could create Internet Explorer binary behaviors with .NET&lt;/a&gt;. Behaviors are a feature introduced in Internet Explorer that allows you to attach new behaviors to existing tags or create new ones (i.e. I could create an ADDRESSBOOK tag and give it new behavior inside of HTML). Binary behaviors further extend this and allow you to write them in languages like C++, so you can do arbitrary 2D graphics for example or deeper extensions. It used to be that you had to know C++, but I just stumbled across a tutorial from 2003 where you could do it with .NET, which is much easier.</content><link rel='alternate' type='text/html' href='http://codinginparadise.org/weblog/2008/03/internet-explorer-binary-behaviors-in.html' title='Internet Explorer Binary Behaviors in .NET'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3191291&amp;postID=1126673425160751422' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://codinginparadise.org/weblog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/1126673425160751422'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/1126673425160751422'/><author><name>Brad Neuberg</name></author></entry><entry><id>tag:blogger.com,1999:blog-3191291.post-2783575291969938059</id><published>2008-03-13T16:02:00.000-07:00</published><updated>2008-03-13T16:04:10.113-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dojo storage'/><category scheme='http://www.blogger.com/atom/ns#' term='gears'/><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><category scheme='http://www.blogger.com/atom/ns#' term='flash storage provider'/><title type='text'>Easy Download of Dojo Storage for Developers</title><content type='html'>I've put up a &lt;a href="http://codinginparadise.org/projects/dojo_storage/release/dojo-storage-03-13-2008.zip"&gt;simple ZIP file&lt;/a&gt; that has just Dojo Storage. This is an optimized build of Dojo with just the small files necessary to use Dojo Storage. I've also created a simple Hello World example that folks can use to get started with Dojo Storage quickly. Note that this is a pre-release version of Dojo 1.1 which is coming out soon but has not been wrapped up yet. This version has a fully functioning Flash Storage Provider, HTML 5 storage, and Google Gears storage.</content><link rel='alternate' type='text/html' href='http://codinginparadise.org/weblog/2008/03/easy-download-of-dojo-storage-for.html' title='Easy Download of Dojo Storage for Developers'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3191291&amp;postID=2783575291969938059' title='2 Comments'/><link rel='replies' type='application/atom+xml' href='http://codinginparadise.org/weblog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/2783575291969938059'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/2783575291969938059'/><author><name>Brad Neuberg</name></author></entry><entry><id>tag:blogger.com,1999:blog-3191291.post-1429006152956755413</id><published>2008-02-22T11:28:00.000-08:00</published><updated>2008-02-22T11:32:17.661-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pubtools'/><category scheme='http://www.blogger.com/atom/ns#' term='gears'/><title type='text'>Offline Enable Drupal Sites?</title><content type='html'>&lt;a href="http://drupalfiles.blogspot.com/"&gt;Robin Monks&lt;/a&gt;, a &lt;a href="http://drupal.org/"&gt;Drupal&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Leet"&gt;hack3r&lt;/a&gt;, is already starting to &lt;a href="http://drupalfiles.blogspot.com/2008/02/ive-got-some-good-stuff-to-talk-about.html"&gt;think about and play around&lt;/a&gt; with &lt;a href="http://codinginparadise.org/weblog/2008/02/pubtools-offline-enable-content-in.html"&gt;Gears PubTools&lt;/a&gt; and see what it can do in the Drupal world:&lt;br /&gt;&lt;br /&gt;&lt;blockquote href="http://drupalfiles.blogspot.com/2008/02/ive-got-some-good-stuff-to-talk-about.html#quote%28You%20can%20make%20your%20site%20available%20offline...Great%20for%20research%20sites%20and%20such.%29"&gt;Please view original blog post to see this Purple Included quote (I haven't hacked support for Purple Includes in my RSS feed yet -- wanna take a stab at that?)&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Any Drupal hackers want to take this on?</content><link rel='alternate' type='text/html' href='http://codinginparadise.org/weblog/2008/02/offline-enable-drupal-sites.html' title='Offline Enable Drupal Sites?'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3191291&amp;postID=1429006152956755413' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://codinginparadise.org/weblog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/1429006152956755413'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/1429006152956755413'/><author><name>Brad Neuberg</name></author></entry><entry><id>tag:blogger.com,1999:blog-3191291.post-3910886181104122872</id><published>2008-02-22T11:21:00.001-08:00</published><updated>2008-02-22T11:25:15.608-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hypertext geekery'/><category scheme='http://www.blogger.com/atom/ns#' term='engelbart'/><category scheme='http://www.blogger.com/atom/ns#' term='bootstrapping'/><title type='text'>Bootstrapping</title><content type='html'>&lt;a href="http://en.wikipedia.org/wiki/Douglas_Engelbart"&gt;Douglas Engelbart&lt;/a&gt; has a great idea I love called bootstrapping. The best definition of it I've ever heard came from &lt;a href="http://scripting.com/"&gt;Dave Winer&lt;/a&gt; in 2000 &lt;a href="http://www.xmlrpc.com/bootstrappingTheTwoWayWeb"&gt;when he was trying to bootstrap better web-based editing&lt;/a&gt; tools using XML-RPC:&lt;br /&gt;&lt;br /&gt;&lt;blockquote href="http://www.xmlrpc.com/bootstrappingTheTwoWayWeb#quote%28Doug%20Engelbart,%20who%20envisioned...and%20why%20they%20have%20been%20designed%20with%20more%20power%20than%20they%20need%20to%20get%20today%27s%20job%20done.%29"&gt;Please view original blog post not in a feed reader to see this Purple Include&lt;/blockquote&gt;</content><link rel='alternate' type='text/html' href='http://codinginparadise.org/weblog/2008/02/bootstrapping.html' title='Bootstrapping'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3191291&amp;postID=3910886181104122872' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://codinginparadise.org/weblog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/3910886181104122872'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/3910886181104122872'/><author><name>Brad Neuberg</name></author></entry><entry><id>tag:blogger.com,1999:blog-3191291.post-8954262635422443051</id><published>2008-02-22T10:47:00.000-08:00</published><updated>2008-02-22T10:52:59.240-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Creative Fearlessness</title><content type='html'>I've been here at Google for about 2 1/2 months now and am getting used to the culture. I just ran across a &lt;a href="http://www.fastcompany.com/node/703050/print"&gt;great article in Fast Company&lt;/a&gt; that goes into some of the cool ambitious energy around here to change the world:&lt;br /&gt;&lt;br /&gt;&lt;blockquote href="http://www.fastcompany.com/node/703050/print#quote(It's too good to be true...ones we all should ask more often.)"&gt;Read original blog post outside of feed to see Purple Included quote&lt;/blockquote&gt;</content><link rel='alternate' type='text/html' href='http://codinginparadise.org/weblog/2008/02/creative-fearlessness.html' title='Creative Fearlessness'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3191291&amp;postID=8954262635422443051' title='2 Comments'/><link rel='replies' type='application/atom+xml' href='http://codinginparadise.org/weblog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/8954262635422443051'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/8954262635422443051'/><author><name>Brad Neuberg</name></author></entry><entry><id>tag:blogger.com,1999:blog-3191291.post-2109131145111351045</id><published>2008-02-21T13:57:00.000-08:00</published><updated>2008-02-21T15:01:29.946-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='announcement'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><category scheme='http://www.blogger.com/atom/ns#' term='gears'/><title type='text'>Gears PubTools: Offline Enable Content in Minutes</title><content type='html'>I've created some simple utilities to make it much easier to use &lt;a href="http://gears.google.com/"&gt;Google Gears&lt;/a&gt; without having to delve into JavaScript. This new open source library, named Gears PubTools, is a simple collection of JavaScript files that make it easy for content authors to work with Google Gears with just a little bit of HTML. With PubTools, you can easily offline-enable your content within minutes:&lt;br /&gt;&lt;br /&gt;- Point to a &lt;a title="Gears manifest file" href="http://code.google.com/apis/gears/tutorial.html" id="pv47"&gt;Gears manifest file&lt;/a&gt; (a special file that lists all the pages to take offline) with a simple HTML attribute:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;html gears-manifest="manifest.js"&amp;gt;&lt;/code&gt;&lt;/pre&gt;- Create a &lt;a title="desktop shortcut icon" href="http://code.google.com/apis/gears/upcoming/api_desktop.html" id="ppf4"&gt;desktop shortcut icon&lt;/a&gt; that points right to your app and&lt;br /&gt;use a custom image:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;html shortcut="true" gears-manifest="manifest.js"&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt; &amp;lt;link rel="shortcut.icon" title="32x32" href="icon32x32.png"&amp;gt;&amp;lt;/link&amp;gt;&lt;/code&gt;&lt;/pre&gt;- You don't even have to write the manifest file yourself! PubTools includes a &lt;a title="simple bookmarklet" href="http://gears-pubtools.googlecode.com/svn/trunk/src/manifest-bookmarklet.html" id="rcee"&gt;simple bookmarklet&lt;/a&gt; that developers can drag to their browser's toolbar. Just navigate to the web pages you want offline, press the "Generate Manifest"  bookmarklet, and a dialog will appear with the full manifest file generated for you ready to cut and paste into a file.&lt;br /&gt;&lt;h2&gt;Quick Start&lt;/h2&gt;Want to get started using PubTools? First check out the &lt;a title="simple demo page" href="http://gears-pubtools.googlecode.com/svn/trunk/demos/demo.html" id="vpqz"&gt;simple demo page&lt;/a&gt;, then get started:&lt;br /&gt;&lt;br /&gt;1) Use the &lt;a title="PubTools bookmarklet" href="http://gears-pubtools.googlecode.com/svn/trunk/src/manifest-bookmarklet.html" id="ffrj"&gt;PubTools bookmarklet&lt;/a&gt; to create a Gears manifest file. Go to &lt;code&gt;&lt;a title="src/manifest-bookmarklet.html" href="http://gears-pubtools.googlecode.com/svn/trunk/src/manifest-bookmarklet.html" id="net8"&gt;src/manifest-bookmarklet.html&lt;/a&gt; &lt;/code&gt;to get the bookmarklet and follow the directions. Save this to a file, such as &lt;code&gt;manifest.js&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;2) In the web page you want to offline-enable, pull in the &lt;a title="PubTools JavaScript file" href="http://gears-pubtools.googlecode.com/svn/trunk/src/pubtools-gears.js" id="a-ta"&gt;PubTools JavaScript file&lt;/a&gt;:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;script type="text/javascript" src="pubtools-gears.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;3) Point to your Gears manifest file:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;html gears-manifest="manifest.js"&amp;gt;&lt;/code&gt;&lt;/pre&gt;4) If you want a desktop shortcut icon, add &lt;code&gt;shortcut="true"&lt;/code&gt;:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;html gears-manifest="manifest.js" shortcut="true"&amp;gt;&lt;/code&gt;&lt;/pre&gt;You must provide at least one icon in PNG format; possible sizes are  16x16, 32x32, 48x48, 128x128. Providing all of them is best to allow the OS to choose the best one. Specify them using a &lt;code&gt;LINK&lt;/code&gt; tag:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;link rel="shortcut.icon" title="16x16" href="icon16x16.png"&amp;gt;&amp;lt;/link&amp;gt;&lt;br /&gt;&amp;lt;link rel="shortcut.icon" title="32x32" href="icon32x32.png"&amp;gt;&amp;lt;/link&amp;gt;&lt;br /&gt;&amp;lt;link rel="shortcut.icon" title="48x48" href="icon48x48.png"&amp;gt;&amp;lt;/link&amp;gt;&lt;br /&gt;&amp;lt;link rel="shortcut.icon" title="128x128" href="icon128x128.png"&amp;gt;&amp;lt;/link&amp;gt;&lt;/code&gt;&lt;/pre&gt;By default, PubTools chooses intelligent defaults for the shortcut icon. You can override these if you wish using &lt;code&gt;META&lt;/code&gt; tags:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;meta name="shortcut.name" content="Test Application"&amp;gt;&amp;lt;/meta&amp;gt;&lt;br /&gt;&amp;lt;meta name="shortcut.description"&lt;br /&gt;content="An application at http://www.test.com/index.html"&amp;gt;&amp;lt;/meta&amp;gt;&lt;br /&gt;&amp;lt;meta name="shortcut.url" content="http://www.test.com/index.html"&amp;gt;&amp;lt;/meta&amp;gt;&lt;/code&gt;&lt;/pre&gt;Most of these have sensible defaults and can be left out:&lt;br /&gt;'&lt;code&gt;shortcut.name&lt;/code&gt;' defaults to the HTML &lt;code&gt;TITLE&lt;/code&gt; element if not present.&lt;br /&gt;'&lt;code&gt;shortcut.url&lt;/code&gt;' defaults to the page's URL if not present.&lt;br /&gt;'&lt;code&gt;shortcut.description&lt;/code&gt;' is optional and defaults to the string&lt;br /&gt;"&lt;code&gt;Offline Web Application&lt;/code&gt;"&lt;br /&gt;&lt;br /&gt;Note that shortcut icons are only in the development version of Gears; the currently deployed version of Gears does not support shortcuts yet. PubTools will correctly continue to function if the user's installed version of Gears doesn't support shortcuts.&lt;br /&gt;&lt;br /&gt;5) PubTools provides a simple default, optional UI for the user. To get this UI, add an element with the magic ID "&lt;code&gt;gears-pubtools-offline-widget&lt;/code&gt;" into your HTML:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;div id="gears-pubtools-offline-widget"&amp;gt;&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;When the page loads, the user will see "Download Offline." When pressed,  everything in the manifest is made offline and the shortcut icon is created if desired, with the user given feedback on the process. Now, the user will see "Delete Offline." By pressing this a user can delete the offline resources and start over at a later date.&lt;br /&gt;&lt;br /&gt;If you don't want the default UI, your custom UI can call &lt;code&gt;PubTools.downloadOffline()&lt;/code&gt; to initiate the download of offline resources, and can call &lt;code&gt;PubTools.deleteOffline()&lt;/code&gt; to delete the offlined content. These can only be called after the page is loaded.&lt;br /&gt;&lt;br /&gt;6) That's it! You're done. See the &lt;code&gt;&lt;a title="demos/demo.html" href="http://gears-pubtools.googlecode.com/svn/trunk/demos/" id="d5w:"&gt;demos/&lt;/a&gt; &lt;/code&gt;directory for a demo and boilerplate you can copy.&lt;br /&gt;&lt;br /&gt;Quick note: Make sure &lt;i&gt;not&lt;/i&gt; to list the &lt;code&gt;pubtools-gears.js&lt;/code&gt; file in your manifest file. The manifest generator takes this into account to leave this out, but if you create it by hand leave it out. We do a trick where when you are offline we simply don't have the file, which doesn't display the default UI to the user since it makes no sense to show that when offline.&lt;br /&gt;&lt;br /&gt;I've opened a &lt;a href="http://code.google.com/p/gears-pubtools/"&gt;code.google.com open source project for PubTools&lt;/a&gt;. I've done a bunch of QA testing on it, but make sure to &lt;a href="http://code.google.com/p/gears-pubtools/issues/list"&gt;file any bugs&lt;/a&gt; you might find. If you have patches &lt;a href="http://mailhide.recaptcha.net/d?k=01wDblH_0_QFEjY8nZ2-3VPg==&amp;amp;c=s4V56ZXzRwnnSBwh5h0S-oM84QtkUnW0I3DsdxetHvE="&gt;send them in to me&lt;/a&gt;.</content><link rel='alternate' type='text/html' href='http://codinginparadise.org/weblog/2008/02/pubtools-offline-enable-content-in.html' title='Gears PubTools: Offline Enable Content in Minutes'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3191291&amp;postID=2109131145111351045' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://codinginparadise.org/weblog/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/2109131145111351045'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3191291/posts/default/2109131145111351045'/><author><name>Brad Neuberg</name></author></entry></feed>