skylarwoodward

oooooooooooooooooooooooo

css reset

The blog has been long overdue for a visual refresh for a lot of reasons – not the least of which, everything from screen resolutions to web standards has come a long way since 2003. Back then I’d barely done anything in the way of an original web page since the new millennium. I’m still no CSS ninja but I thought it’s worth noting some decisions I made in laying out new HTML from scratch.

  • Goodbye XHTML. Somewhere along the way I passively picked up the useless habit of trying to close all my tags. I blame subliminal brainwashing from an SGML talk I attended at a government web conference in DC back in 1995. I have this post to thank (along with a few webdev blogs I can’t find right now) for freeing me from all this XML-mishmash nonsense. And, of course, we now have <!DOCTYPE html>.
  • reset-fonts-grids The last time a made a major change to my blog I think I tried to ignore as much of the new wizbang CSS and PHP madness that I could and still hack the default WordPress template at the time, Kubrick. Coincidently, this was just a few weeks before the release of YUI. It would be almost 3 years before some rockstar Brickhouse colleagues would proselytize me on the benefits of a good CSS framework. Ever since, I’ve stuck to the YUI reset-font-grids for most projects. With the hipstometer going through the roof for new and minimal CSS templates I took another look at the options this morning but I eventually settled on the latest iteration of YUI CSS and threw in base styles (headers, lists, etc.) for extra milage. Twitter’s Bootstrap is great, but it is already overused in every hackathon of Fall 2011 and is too heavily branded for use in this context. CSS Base was just the right amount of sugar. Unfortunately, reset-fonts-grids is no longer prebuilt as a YUI module but you can easily nab the generated combo URL here with or without base.
  • UTF-8 ❤ Living in France for two years has taught me almost as much about the importance of option-key equivalents as the pronunciation of proper nasals. So like all the high schoolers in Twitterverse with sic emjoi keyboards I ♡ ✍ 😹 in my 覺. Unfortunately, we still need a well-formed meta tag in the header to get UTF-8 rendering right.

Stylistically, I’m starting off simple. Black, white, and a splash of color – probably more inspired by Paris itself than the aftershocks of european modernism. A bit more character should work its way in over time.

Cloud + Apps

Every year bloggers and journalists come out with hoards of predictions about what devices and services Apple will release at their premiere annual events. When Apple attended MacWorld it kept things sane – consumer predictions vs core hardware & software predictions were well compartmentalized. Now that Apple arguably only has one such premiere event, the future-seekers get too caught up in announcements for consumers (perhaps since that it what drives much of their readership) and looses focus on the fact that WWDC and its related announcements are all about conveying value of the Apple ecosystem to its developers. As such, all the press to date seems to have missed what I predict to be Apple’s most significant announcement today.

And of course, they’ve made it easier than ever this year – reduced to a simple equation. Lion + iOS 5 + iCloud = developer nirvana. That is, we’re going to take our two open developer platforms and we are going to connect them though a new service called iCloud. Okay, so yes this means all Apple services and devices are connected, but more importantly what does this mean for you the developer? Now every app you write can stay seamlessly synced with every other instance of that app on a user’s device and Apple will do the hard work. Better yet, they are going to offer this service for free for everyone on iOS. It’s Core Data with all its sophisticated sync services plus superfast cloud-based storage able to handle gigabytes of data, all available to iOS and Lion developers, with just the use of a few simple APIs.

Why is this so important? Because everything is going to the cloud. Security stumbles and network brittleness aside, it is the future, and it is already dominating the most powerful apps on Apple’s and others devices. Think about the apps you use vs. those from just a few years ago. Things was the had-to-have app for task-management when people mostly worked from one laptop, but it’s been largely obsoleted by Wunderlist and similar apps that let you see your data and agenda across all devices, seamlessly. It’s the same for Simplenote vs other local-only stores like Pastebot or even the default iOS notes app. The best games store my progress online (eg, Starcraft) so i can pick up from where i left off on any device. Echofon trounces almost every other Twitter app nearly by its global read-and-notify sync alone. 1Password quickly becomes useless if you log in from multiple devices if you don’t keep it stored and accessible via Dropbox. We’re done with having to manage and copy our data. Apps need to do this for us. For Developers, it’s hard, but iCloud is here to help.

Syncing data is hard and so is building reliable network storage that is globally distributed, redundant, and backed up. This is true even for “web apps.” As a developer I have to choose between being cloud-enabled or investing in other awesome features that distinguish me from the pack (pixels, killer algorithms, clever interactions). At best, I can leverage an existing cloud-store like iDisk or Dropbox to do this for me, maybe even license a small lib to help make this easier. But my guess is Apple is going to erase this headache for every one of their developers today and thus pave the way for an unprecedented future of interconnected apps on their devices that will leave the competition struggling for at least another couple years – simply because their competition’s developer bases won’t have the infrastructure available to solve these hard problems. This is what makes Apple’s platforms so strong. They solve really hard problems for their developers and eliminate code to write or mange. The App Store has been their ace up until now and after the release of Lion and IOS it will be iCloud. Or, at least it should be. If not, it is someone else’s game to win.

Panel-Picking Killer Tweet Of Your Fundraising Can Haz Non-Profit Electrodance

SXSW is less than a week away and as I sit here at my desk in Paris I’ve hardly even begun to think about which parties to RSVP for, much less which panels to attend. With the added pressure of actually being a presenter at this year’s festival, I’m lucky to have the folks at Beaconfire keeping my co-panelists and I on our toes as we finalize preparation for what I believe will be a significant and meaty discussion contributing to the already exceptional Greater Good line-up at Interactive this year.

For those of you just joining via crosspost-trackback-twitterific magic, I’m Skylar Woodward, designer of the Kiva API and protagonist of the Kiva Developer community. When we started Kiva just over 5 years ago it was little more than a highly-customized, handwritten blog with some PayPal buttons attached. Though there were some audacious ambitions of transforming the microfinance industry, no one could have guessed we’d be accused of leading an online revolution of fundraising at large.

In our panel at SXSW we’re taking on this allegation as we discuss “Will Kiva Kill your Non-Profit?” and cornering the chief culprit of this phenominon under the sobriquet (pardon my French) of “Donations 2.0.” What is it exactly? To me, it is the decentralization of charity driven by a cultural movement to operate in, and through the influence of, community. People see technology, most notably manifest through infinite treasure troves of data and online social connections, as able inform, empower, and monitor the application of their personal resources, thus focusing their impact to the truly good in time where the the same proliferation of information has nurtured a new age of skepticism.

But if this how one defines the new philanthropy, is Kiva truly a relevant example? I think, yes, but not in the way most might think; as Kiva has scaled to hundreds of thousands of loans, the classic Kiva interface arguably does more to centralize than de-monopolize donor channels. What then is the role of large charities and NGOs when a single tweet by Conan O’Brien can relieve economic hardship for a young couple’s in small town Michigan? Knowing our role, what changes should we make and what tech must be employed such that we can serve it? Does every cause benefit from our new model?

Even after a few months of pondering these questions, we as a panel don’t have any bullet-point answers to give you. That, in particular, is why we’re stoked to fully ignite the discussion with you on March 16 in Austin. For those of you who are instead attending Web Video Thunderdome, I’ll see you on the dance floor.

A Kiva entrepreneur goes global

Since Kiva started, I had always dreamed of seeing a loan come full circle in the sense that an entrepreneur I had funded would eventually be able to sell wares to me or my friends. There are lots of sites which help to make fair trade goods available to the international community such as Ten Thousand Villages or Trade As One, but none of these were connected directly with any entrepreneurs on Kiva. The best example I had to date was Kilama George requesting a home loan which he would pay for with bracelets he made for the Invisible Children project (sold here in the US).

Today, Kakeda Sun is breaking the mold by selling kramas from Cambodia online. She’s doing so with the help of a site called Ahkun.org started by a former Kiva Fellow from Brooklyn. On the site you can choose between blue and white kramas or orange and red kramas. (Krama’s are Cambodian scarfs which are used for everything from skirts to headbands). For the full story on Kakeda and her product, check out this video from Ahkun:

Though the kramas sell for $15 online, it’s really interesting that you could buy one directly from the entrepreneur for 44 cents if you happen to be in the Chroy Ompel Village. Sanjaya (the former Kiva Fellow who started Ahkun) is being pretty open about the cost discrepancy on the product page and has a complete breakdown of the Ahkun costs on the site. (He’s paying a 31 cent premium on each krama and not looking to profit from the venture.) However, it probably does more than a loan or a monthly wage to help demonstrate the disparity between costs in our communities and those living in the poorest regions of the world.

Why Microfinance Works

Today, we had a great discussion at Kiva with Martin Burt from Fundación Paraguaya about how microfinance is working in Paraguay and how Kiva is affecting that. He started off with a question his team has been investigating lately which is “Why does microfiannce work?” He pointed out that many simple things have struggled to succeed such as education, food programs, and housing projects. So he asked why does microfinance, a very complex concept that is nontrivial to implement, work where so many other projects in the same region have failed. His theory is that microfinance works because it assumes poor people are smart.

Burt suggests that most charitable programs are structured in a way that assumes that the poor are needy because they are less capable of solving their problems that those offering the solution. So education, medical care, or food is given to people in a way that, although not intentional, takes from their dignity. He offered an interesting contrast to the theory of giving that sets microfinance apart form other kinds of aid. He said many people think that by offering someone a $100 loan and asking for $118 (loan+interest) in return, you’ve taken $18 from that person. In fact, at Fundación Paraguaya, they see things very differently – instead you have entrusted $118 of value to the intelligence and integrity of this person. By contrast, a client who is given 5 pieces of bread is being taken from by every loaf. The gift often assumes he is not capable of finding a way to feed himself and thus steals from his dignity. It creates an imbalance of power, a sense of something owed by the recipient of aid, and, eventually, works in streaks of racism. The loan, on the otherhand, assumes the borrower (though poor) is smart and worthy of trust and investment.

He went on to explain that his team is working on other programs that preserve this basic assumption of microfinance – that the poor are smart and able to help solve their own problems. They are applying this to education and they are seeing fantastic improvements to graduation rates compared to free programs based on government or other funding. These solutions often have a genesis with a loan. After loans, the person is no longer poor. They need food, they can buy food. They need medicine, they can buy medicine. They want education, so they begin to invest in it. The programs preserve the dignity of the people trying to bring necessary change to their lives.

I had imagined that after brining loans to the poor, one of the next steps for Kiva might be to bring their products to the lenders (eg, coffee from an entrepreneur sold to Americans via the web) – to close the loop in the give and the take. While this isn’t necessarily a bad idea it might be the wrong approach to helping the people advance themselves as a society. Maybe what is needed are more choices for people beyond loans, more opportunities for them to invest in their own quality of life. In that sense, we’d be bringing more high-quality and affordable products to them, offering more tools from which to choose to solve the problems they face. I’ve always heard it said that microfinance is traditional finance turned on its head – offering money to those most deserving (read: in need, yet responsible) rather than those offering the lowest financial risk. It is exciting to think about how other problems in developing regions could be solved by a similar inversion of the traditional approach.

Kiva Comics

In September, I became an official employee at Kiva. People have asked me almost every day since then, “How is going? Was the transition from a big company hard? What’s it like being at a, well, non-profit now?”

The answer is, things are awesome. It’s not necessary about the specific cause or the product, and it certainly has nothing to do with PHP or a 3-year-old legacy code base (which for, yes, I’m partially responsible). It’s because of this:

http://www.fredr1c.com/kiva_in_cambodia_comic/Comic.html

People. People like Sopha who are worth discovering but are otherwise isolated in the most remote and poorest places in the world. People like Zvi and Matt who can’t stop smiling every day they come in the office. People like John who quit their job after 10 years to pack up, ship out to Cambodia for months, and revel in applying their talents to connecting lenders to borrowers.

Once you know people and their stories, your motivation to evoke change becomes an unstoppable human response.

Way to go John. Welcome to the Kiva family.

BrowserPlus goes off-network!… almost?!?

After a year and a half of development, BrowserPlus is released into the hands of web developers worldwide promising to change the future of client-side web development, as the new motto states, “on the fly.” A whole host of new services are come with the release, not the least of which are Motion (a service that exposes accelerator data from the local device as input) and Uploader (which completes the Drag-and-Drop upload dream by facilitating file upload for any site, not media just to Flickr). As a user-submitted spreadsheet shows, BrowserPlus does a great job of complementing features provided by Gears, not competing with them.

However, with all this webdev excitement coming early this Christmas, there’s plenty of mystery to prepare us for Halloween. A trip over to the BrowserPlus site communicates a simple and unexplained off-the-air promise to “be back shortly…” In fact, not even the old demos like PhotoDrop and JSONRequest are available.

It’s hardly reasonable to think the site shut down for performance reasons given that almost all of the BrowserPlus content is static. So what could be causing the delay? A late breaking security flaw? Inadvertently offensive misuse of religious text? Cold feet on the big day?

Here’s hoping that Yahoo! resolves the issue soon and the rest of us can get our hands on the goods….

UPDATE Steve informed me Friday that the undisclosed issues were resolved and BrowserPlus is open for download or development as of Halloween (the original planned launch date). Congrats to all my peeps in virtual Sunnyvale!

Hacking BrowserPlus

Wow. It’s pretty cool to see so much excitement about BrowserPlus just a day after putting it into public view. Truly, its humbling. Already many folks seem eager to go beyond experiencing it and actually start tinkering, building – and some have. It requires a bit of tenacity to uncover but actually, everything you need to get started is at your fingertips. Let’s look at what it takes to start hacking.

First, there’s the core BrowserPlus javascript API. The latest copy is at http://bp.yahooapis.com/2.0.4/browserplus.js

In this file are all the functions outlined in the code samples along with a full under-the-hood look at what is going on in many of the calls. The two key functions you’d need to know are init() and require(). (See the linked samples for usage.) Putting this together we can create a simple local file, test.html:

<html><body></body>
<script class="javascript"
   src="http://bp.yahooapis.com/2.0.4/browserplus.js">
</script> 
<script class="javascript">
  YAHOO.bp.init(function(res) {  
    var greeting;
    if(res.success) {greeting = "BrowserPlus says, Hello World.";}
    else {greeting = "BrowserPlus is hiding.";}

    document.body.appendChild(document.createTextNode(greeting));
  });  
</script>
</html>

This is a simple document that will attempt to initialize BrowserPlus. If it succeeds, it writes “Hello World” to the document body. If you run this sample in your BrowserPlus-enabled browser it will fail. Why? Currently, BrowserPlus is restricted to Yahoo! sites; that includes restrictions for running local files. A simple addition to our test file exposes the error:

  else {greeting = "BrowserPlus is hiding. ("+res.verboseError+")";}

The error BP_EC_UNAPPROVED_DOMAIN confirms the local domain (file://) isn’t permitted. That means it’s time to dig into the BP configuration files. On Mac these are in

  /Users/[you]/Library/Application Support/Yahoo!/BrowserPlus/

On Windows XP, you’ll find them in something akin to

  c:\\Documents And Settings\[you]\Local Settings\Application Data\Yahoo!\BrowserPlus\

and on Windows Vista…

  c:\Users\[you]\AppData\Local\Yahoo!\BrowserPlus\

In the Permissions folder is a file similarly named which is what we’re looking for. Opening it up we see:

    "whitelist" : [
	"^http(s?)://(.*)\\.yahoo\\.com$",
        "^http(s?)://(.*)\\.yahoo\\.com:[0-9]+$"
    ],

The intuitive addition to this list is:

    "whitelist" : [
	"^http(s?)://(.*)\\.yahoo\\.com$",
        "^http(s?)://(.*)\\.yahoo\\.com:[0-9]+$",
        "^file://$"
    ],

The file is modified, but BrowserPlus hasn’t picked up the changes yet. The clean way to force this is to close all open browser windows. (BrowserPlus shuts down when no pages are using it.) The dirty way to do this is to search for BrowserPlusCore in your process list and kill it using your favorite platform-available tool. Either way, after opening test.html back up we should see our “Hello World.” Sweet – now we’re ready to start playing.

There is one final catch. BrowserPlus is fairly proactive about security so it helps to know that the permissions file will be overwritten on a regular basis. The savvy way around this would be a simple build script or at least a handy copy of our modified permissions file that we can use to reapply the changes in between development sessions. We might also test for BP_EC_UNAPPROVED_DOMAIN somewhere in our init callback to scream if the temporary development environment is disrupted.

That’s a lot of under-the-hood detail, but the takeaway is that BrowserPlus was more-or-less designed to be hacked. Not hacked in the “I want to steal innocent users data and delete their files” sort of way, but in a manner that allows experimentation and freedom without compromising the security of pedestrian users. There’s more there to be mined, but enabling local development is a good place to start. Good luck and cheers to all the curious and creative souls.

Launches, finally.

After 3 years of hiding out in the campuses of Yahoo! it’s good to finally have something external to show for it. Most exciting is the release of BrowserPlus, a software and software distribution framework that allows device developers (desktop, mobile, etc.) to seamlessly bridge the browser programming environment (DHTML, JS) to any component they can dream up (VoIP, image manipulation, data caching, etc.). Some time ago we created a platform team to focus on device software at Yahoo! and this is what has emerged amidst the quickly shifting strategy of the mothership. The 1.0 release of BrowserPlus is intended only for use by Yahoo! sites to enhance customer experiences; however, in the coming months, developers might expect the ability to use components on their own sites. (If you’re interested in this, send us feedback). In the meantime, you can hack the framework on your own system after you’ve installed it to start experimenting. You can experience BrowserPlus currently through the PhotoDropper module on Mash, though direct installs are available for mac or pc. A hearty three cheers for the guys that made it happen – Lloyd, Gordon, Dave, and Steve.

Also this week was the official external launch of Fire Eagle, a platform for sharing your physical location in the world, to developers. This is the second public-facing project to launch from the team we started in San Francisco back in late May, Brickhouse. (The first was BravoNation.) Dopplr is one of the first sites to make use of Fire Eagle, updating your location to Fire Eagle once a trip begins or ends. You can expect wider exposure of Fire Eagle in the coming weeks as more developers ready their apps for the service, creating a complete ecosystem of location-sharing apps – from geo-friend-finders and SMS location updaters to location savvy search tools. Finally, location apps don’t have to be a closed system solutions. The whole team (Jeannie, Sam, Kevron, Rabble, Simon, Seth, Phil, Marc, Mor, and Salim) will be celebrating and evangelizing in SXSW this week, though a special congratulation is in order to Tom who carried the product from skunk works to research prototype, and delivered it at public launch this morning.

An interesting parallel between these projects, aside from their timing or my contributions, is that both employ Ruby in significant ways – significant, not necessarily to the scope of the app, but to the future of the language itself. Fire Eagle is the first Ruby on Rails application to be publicly launched at Yahoo! (a technical stunt on all fronts, indeed), and has the potential to be the most significant test of scale for the Rails platform on the Internet. BrowserPlus is making use of Ruby through an runtime engine component that allows for other components to be written in Ruby rather than compiled OS-native languages. That is, load the Ruby Engine component into BrowserPlus, then write your own component in Ruby that leverages any gem on the planet to offer up new functionality to your applications in the browser. It’s all super easy to do, but we are getting ahead of ourselves in suggesting you write your own at this point. Still, it’s all exciting for the world of Ruby.

Both BrowserPlus and Fire Eagle will be easier to get your hands on in the coming weeks, but if you want to play with one of them now it’s best to go through Mash for BrowserPlus and Dopplr for FireEagle – so you have a chance to see each platform working in practice. If you need an invite to any of the above, just post a comment to this article with your email address (no worries, it won’t be exposed).

Rediscovering Clinton

I’m popping open the RSS reader less as of late, but today I caught that Matt logged a post thanking Clinton on his unsolicited evangelism of Kiva. Reading through Clinton’s recent interview on MSNBC I can’t help but feel an astounding glow about what’s going on.

Over 12 years ago I worked for Clinton in the West Wing. I didn’t think much of him then – I’m not sure why (perhaps its always easy to dislike politicians) – I was mostly excited about working with this evolving thing called ‘the web’ in the context and influence of the executive office. Still, it was immensely humbling to be in his presence. Of the two times I met him, I couldn’t get much more out that quick pitch for supporting overseas educational exchange programs. He listened, responded earnestly. You had some sort of feeling that you were in the presence of a gentle giant.

I’d say with every year since the passing of the last election, my respect for him has grown (and for Gore too, for that matter). Watching these men retire from their DC personas and redirect their fame and fund raising capacity to speed the snowball of work for global social change and bolster the realized potential of the tiny organizations with bright ideas in this space – well, it’s simply magical. It embraces a hope that were not just experiencing a fad or being exploited by clever marketers – the culture that is emerging is one that will care for the world and see through to solving of the problems with which we’ve been challenged.

More specifically, it is utterly mind blowing that this man who is, for all practical purposes, unaccessible to most of the population yet has seen the world and its macro-problems more completely that I ever will, completely understands the Kiva model down to the finest detail and endorses it as scalable and capable of fatally impacting the enormous problem of re-dispersing the world’s wealth. He respects my dearest friends and our labors more than I’ve ever extended the same to him. It just makes me stop and thank God for letting me be a tiny part of something so beautiful.

Copyright © 2003-2011 Skylar Woodward | Entries (RSS) and Comments (RSS).