Sunday, March 30, 2008

Off to Thailand & Cambodia

I'm taking off to Southeast Asia in a couple of hours. Our goals for this trip is to set up the structure for our long-term presence in the region. I'm going with Dennis (our Program Director) to Bangkok to meet with many organizations that we are or would like to be working with in the area such as Mekong Basin Disease Surveillance and Mahidol. From there we go to Phnom Penh and inner Cambodia - where Mary Jane, Luke and Robert have already spent all week.

Here's my rough itinerary

  • March 31..April 4: Bangkok
  • April 4..April 15: Phnom Penh

I'd like to chat with folks who work in the technology space, especially in Cambodia. We also have a meeting with some of the folks contributing to Bar Camp Phnom Penh... So if you are in Phnom Penh and you are doing programming, web design, databases, mobile applications or program localization or have an interest in contributing tech skills to our MCP program drop me a comment here, or send an email at edjez-at-instedd-dot-org, and we'll take it from there.

See you soon!

Tuesday, March 25, 2008

Keeping our infrastructure 'in the cloud' and our costs close to the ground

At InSTEDD -like at any other non-profit..or a well-run business- there is a constant evaluation of how we are using our donors' money, looking for ways we can reduce overhead and anything that doesn't translate directly into mission-related impact.

Given how much of our focus is on technology, it is natural that this concern affects how we design the infrastructure that supports our work. In this post I share the toolset we use to support the lifecycle of our technology which is effective as well as lean. Perhaps others can take advantage of the evaluation work we did or can suggest useful alternatives..

Our key requirements are:

  • The tools work with our Scrum+XP (eXtreme Programming) processes
  • The tools work for an internationally distributed team even when in the field 
  • They are efficient cost-wise as well as adequate for the task and reliable

These requirements led us to evaluate many approaches. Ultimately, we opted for an infrastructure that requires no intranet, and no on-premise servers. That means no extra staff of acolytes & operators simply to keep the things going, and associated savings on power/heat/rackspace management...expenses decidedly not core to our mission.

I'm exaggerating. We do have an intranet. It has a printer.

By using software-as-a-service or software+services we have the advantages of lesser operations and increased reliability. We must also take a hard look at three contentious areas:

  • Security: Will the hosted service provide us with the level of confidentiality, transport security, and the management of user privileges that we need?
  • Data Portability: Will the hosted service allow us to import - and even important - EXPORT data to another service? We didn't want to fall into a lock-in scenario with 'trapped data'. Both on and off-premise backups are a must.
  • Accessibility: Will the service be accessible in the field? How Can it cope with low bandwidth connections? Is it possible to work offline?

In the end, we have arrived at the following list of tools that as a set fare well with our way of working and our needs. You can see the rough cost structure for the services that aren't free (When I say 'Free' I mean gratis/no cost/Free as in Beer.)

Engineering Tools:

Google Code -http://code.google.com/- We use Google Code for the source code control (SCC) of components and tools we release as FOSS . It provides issue tracking, a wiki, and downloads in addition to the source code control features. Free.

image CVSDude - http://cvsdude.com/ - We host in CVSdude the source code for projects in their early stages when they aren't open source yet. Monthly fee.

image Tortoise SVN - http://tortoisesvn.tigris.org/ - Tortoise is the most popular SCC client in the team. CVS & Subversion allow working offline - and managing multiple copies of the source trees on the client, and Tortoise allows you to manage these with ease. Another great feature is that we can keep in the same source tree a mix of projects hosted on Google Code and CVSDude, allowing developers to just do single update and commit operations. This helps us work on our embarrassing early code while keeping the open source projects up to date with no extra hassle. Monthly fee.

image Fogbugz - http://www.fogbugz.com/ - We use Fogbugz for our work-item, task, and bug management. Batch updates are easy with its AJAX-based list management. It allows you to create private and shared views, exports data in multiple formats, provides email notification and reports (eg burndown charts) that are useful in agile processes. And - great for testers - it even has a client that allows you to take screenshots, annotate them, and attach them to new bugs. Finally, it has a killer feature that allows me to create new tasks by just typing and pressing "enter" ("killer" because its abuse guarantees my death at the hands of the engineering team). Monthly fee.

Virtualization - Although it is not "hosted infrastructure", virtualization saves on hardware costs. We run most of our work in virtualized environments which include including dev boxes, boxes running demos, boxes for testing or building. Some devs run these from XP, Linux, or Mac OS. We tend to use VMWare, which does a good job of allowing VPCs unfettered access to USB ports and such when working with special devices. Free or not depending on the virtualization product you use and the OSs you are hosting.

The collective annual fee of all the services listed above roughly equal the cost of one moderate-size server with no OS, no software and no support staff.

Communications & Sharing

Skype - http://www.skype.com/ - For voice, video and chat. At crunch times, our team keeps a Skype channel open -- sometimes for hours at a time. It provides a sense of literally being in the same room. We are also looking at ooVoo, vSee and N-way for video. Basic Skype is free. Additional features, such as forwarding calls to a cell phone, are very cheap.

Conference calling- http://www.intercall.com/- We chose a conference call provider that has access numbers in over 50% of the world's countries. Although costs are based on the number and location of call participants, overseas tolls are avoided, which is a significant savings on international calls.

Twitter  (http://www.twitter.com) "Micro-messages" are great for ad-hoc communications, especially by SMS users spread across several countries. Within the team we send twitter direct messages by prefixing messages with d as in "d some-name I just uploaded the new version check it out". I use Twhirl as a Twitter desktop client. Free.

Sharedview - (Link) We use this new Microsoft tool for quick-and-easy screen sharing. Drawback: it only runs on Windows. But most of us have some flavor of Windows running - even if it is in a virtual machine on Linux or MacOS. Free.

Google Docs - (http://docs.google.com/) We use Google docs for taking notes and brainstorming during conference calls. It allows multiple users to collaboratively edit a document in real time. Once completed, though, we copy the document into MS Word or OneNote and save in Groove, which makes it possible to access the information offline. Free.

Groove - (Link) Microsoft Groove is useful for team coordination, managing "knowledge bases" of technologies and, most important of all, for tracking user requirements in the field. Since Groove is inherently an offline tool, it shines when Internet connectivity is an issue, but local connectivity is possible. It is not a traditional "cloud" product, but is based on a secure mesh architecture that allows pure peer-to-peer interaction. Unfortunately (hint!), it only works on the Windows OS, it speaks non-standard protocols over the wire, and has no "Web Access"/"Live" component to it. It is a part of Microsoft Office Ultimate. License Fees.

Still needing improvements...

These are some of the shortcomings with these hosted services which we hope will be addressed in the upcoming years:

  • Offline access: Many web-based tools would be more useful and valuable if they also offered a thoughtfully-designed, well-architected, reliable client for offline usage (and it takes more than just sprinkling Google gears around your javascript to achieve this, but that's a topic for another post).
  • Unified authentication - The growth in number of sites using single sign on technologies such as OpenID is encouraging but more would be better. In addition, services such as access control and other crosscutting features could be added into the mix (a trend I encouraged at an AOP panel long ago).
  • Support for Integration - I'd like to see more sites view themselves as 'building blocks' -- as part of a larger solution instead of trying to be the 'one stop shop'. Data, process, and UI integration APIs are always welcome.

So far this mix of products has been working well. The increase in bandwidth, along with tools and standards has allowed us to have core engineering-mission-critical tools online, and "software as/plus services" a cost-effective strategy we use everyday.

Wednesday, March 19, 2008

Real world results, virtual world visualizations at Life 2.0

On Monday I attended a large presentation about visualizations at a reputable conference. NASA, NOAA, and Sun attendees were active participants. Then someone showed up dressed as a teddy bear. One of the panel members was a little blue cat. When Xantha Oe (the little blue cat) spoke, we all listened, as it explained the approaches its team had taken to visualize stock market trends -using floating shapes of volumes and colors one could fly around.

Where was all this taking place? The conference was Life 2.0 and the venue Second Life, one of the most popular virtual worlds engines and services available today. In Second Life, you get to create your virtual avatar, and given basic rules of physics and some construction tools, create buildings, clothes, vehicles..and environments where information can be visualized and played with in novel ways.

How does a conference work in Second Life?

This particular session was interesting to our work so I logged into the 'grid' on a side monitor, teleported my avatar into the conference area (I had registered as a Life 2.0 attendee before) and sat at one of the chairs in the auditorium. I turned on the video and audio streams which allowed me to hear the presentation as spoken by the panel and see the passing slides on huge screens. There is a common chat session for everyone in the area (when you 'talk' others in the amphitheater can 'hear' you). The best is that all of this infrastructure can be put together for free - an interesting approach to hold a meeting for non-profits who have tech-savvy members.

Life 2.0 Visualization talk. Can you see the little blue cat on the panel?

The Talk

The talk was divided into five 10-minute presentations ranging from visualizing stock prices to mathematical models and statistical analysis applied to chemistry. My key takeaways:

  • All visualizations basically work by consuming data in some external web service (it is possible to script Second Life objects using LSL to make HTTP calls and get/post information from arbitrary services). There was only one example of a visualization using in-world data held in "notes" - Second Life's version of a sticky note. Some visualizations consume data in proprietary stores designed to serve the required information of their particular domain (e.g. the chemistry data), but others are more general purpose and take data from RSS feeds. I found it innovative that one of the visualizations actually took a Google docs spreadsheet URL and got its data directly from there. Maybe a pattern to follow for other graphing/analysis toolkits?
  • Many of these visualizations are available as open source with real examples in-world of how they are used. There was at least one commercial venture building products in the area.image (as the example above from Green Phosphor)
  • The intrinsically collaborative environment of Second Life is a good place to visualize together. I was happy to see folks paying attention to building visualizations to support conversations between multiple people and using them to lower the bar of shared understanding (as opposed to making the super-specialized visualization only one expert will consume on his/her own).
  • Second EarthThere is a growing amount of work in the area of visualization related to geography and real-world physical structures. Examples of building design and architecture were given, where layouts were optimized as a result of overlaying heatmap visualizations on virtual models of real areas (e.g. airports, highways) . One project of interest was "Second Earth" an open database of shapes and imagery that can be used to create realistic globes and maps in second life and add data on top, such as animated weather simulations. They are even working on a KML importer so you could consume in-world the same visualizations. For rigor I'll mention there are other similar efforts. This could support scenarios beyond collaborative visualization to hybrid 'augmented reality' applications where geo-tagging and field logistics blend in information from the virtual world onto images of the real world.

One thing I was sorry about is that due to a previous appointment I missed another whole session of Life 2.0 dedicated to nonprofits and humanitarian work sponsored by the MacArthur Foundation. If I can chase down one of the presenters and get a recording I'll post it here.

 The auditorium was packed. Here I moved my camera away for a good shot.

All in all, I'm a skeptic optimist when it comes to these applications of virtual world technology.

On one side I think it takes a lot of work to deploy useful technology in second life - especially on the perception side, explaining to the last adopter why they would ever want to learn to control an avatar, helping them beyond the perception that virtual worlds are for foolish purposes, and showing  how this can be used to do work that otherwise is harder or impossible. And obviously the technologies are still maturing, adding some hurdles to the implementation. It's still hard but not frivolous.

imageOn the other side, seeing this ongoing work and its outcomes means that the area will be constantly improving, and that there could be breakthroughs in how people visualize and understand information together. And if it's what it takes to get there, I'm willing to take the advice of a little blue cat.

Tuesday, March 18, 2008

BarCamp in Phnom Penh, Cambodia..and sustainable technology practices

BarCamp is an ad-hoc gathering born from the desire for people to share and learn in an open environment. It is an intense event with discussions, demos and interaction from participants.

(From barcamp.org)

A group of enthusiasts is now organizing a BarCamp in Phnom Penh, Capital of Cambodia. Check out the website and Google groups discussions. If you are using Twitter we have a channel #BarCampPhnomPenh which you can follow here (hashtags allow you to see at a glance all 'tweets' that contain that keyword).

http://barcampphnompenh.org/

Thanks to Beth Kanter and Tharum for hookup and helping us contribute, respectively!

InSTEDD's support right now is around facilitating the conversation with technology firms who might want to sponsor the event, and finding attendees for the event. If you want to chip in contact us or jump straight into the discussion list above! Even if you can't attend, useful computer materials and sponsorship are always welcome. And of course - Can you spell "swag"?

Cambodia has a quite energetic ICT community. And as InSTEDD ramps up its work in the region we hope to become a part of it.

barcamp-pp

InSTEDD will be building a small engineering team in Phnom Penh late this year (lots of details TBD, like how we'll work with local partners in setting this up), so maybe we'll meet some candidates in the process leading up to BarCamp, too. I think that will help us build technology with sustainability in mind.

.."Sustainable technology"?

The notion of sustainability - as in sustainable agriculture, sustainable manufacturing, sustainable architecture, etc - applies to technology as well.

It is possible to throw money at a problem with the best of intentions and have very little impact in the long term, or leave things even worse than at the beginning. But one can build a structure of skills, knowledge and capital that folks can use to grow initial efforts into greater, unexpected things. Sustainable technologies can continue to exist for a longer period of time beyond an initial flurry of activity without drawing more from its environment than it gives back.

Technology ventures have many ways of becoming sustainable. From the economic sustainability perspective, for example, one way is to become a commercial product which attracts enough revenue to maintain a team that keeps the product alive and relevant to its users for enough time. Another way is to 'release' the products into open source and allow an open community influence or take over the direction. At InSTEDD we are publishing our work as open source and free services because it makes sense as a long-term strategy to serve the regions we work in. I think there's a knowledge base to be shared amongst non-profits and their beneficiaries about building and deploying technology with sustainability in mind, a library of patterns and case studies about what works and what doesn't in the long run.

Map image
I believe that being a 'good neighbor' and participating in the local IT community helps create products that work better, accelerate discovery of related local work, and provide opportunities for folks to get involved with the systems that are being used to improve their own countrywide health.

We'll be posting updates, and discussing topics that we expect will come up as BarCamp takes shape.

Hope to see you in Phnom Penh!

Wednesday, March 05, 2008

Hello World

This is my first post after a blogging hiatus that started more than a year ago. Much has changed in my life between then and now so I'll make this post a quick intro of myself, and a catch up for those wondering about me dropping off the blogosphere.

Kid in Lao. Hello World! Peek a boo!At the time, I was an Architect at the Microsoft patterns & practices team, shipping content, frameworks, and tools to help folks be more productive when building large scale applications. I then became the architect with the Microsoft working on prototypes and designing approaches to foster of innovation within the company. But then...

I met Eric, InSTEDD's CEO, during Strong Angel III, a big civilian-military disaster preparedness exercise. Later in 2007 I was partnering with Robert Kirkpatrick (now in InSTEDD too), Ted Okada and Nigel Snoad from Microsoft Humanitarian Systems working on one of our prototypes that was being deployed in Afghanistan to help evolve open standards for data synchronization.

Ingenuity and innovation at the edge: Inflatable sattellite dishes, and quickly assembled weather-friendly shelters. When last October InSTEDD took its current shape with Eric and Robert on board, I was presented with a great opportunity. Although I was working with smart folks across a successful company with an amazing team on pretty cool stuff, I had a longing to work in the humanitarian and health space full time. I wanted to bring in the best of technology to communities that really need it worldwide and to those who work with them. The choice was clear: I took the plunge and joined InSTEDD to lead the engineering arm, so... here I am.

Some of the things that excited me about joining InSTEDD besides the mission and the people, was how we wanted to go about things:

  • Contributing to disaster and health information flow by reframing it as a collaboration problem. I believe in the ability of technology to augment human capability - and its proven ability to get in the way!
  • The opportunity to create a field lab. Taking the notion of "If you don't go you don't know" and "design for the wild", mix it up with agile engineering to build and integrate technology so that can continuously adapt to the needs of communities.
  • The ability to work in a space where platforms are just a means to an end, and cross-platform interoperability part of everyday life. Our scorecard is based on improved livelihoods. We can use Linux, Google, Eclipse- you name it; contribute to stellar open source projects such as Mono or Sahana, and participate in the technical community with a strong emphasis on long term sustainability.

Board at Search And Rescue III, GoldenShadow ExcerciseIf you are reading this coming from the humanitarian or health space, you can infer I am a new on the block, so please be patient. I appreciate any and all guidance, feedback, recommendations, warnings, and advice you might have. If you come from the technology space, well, there is so much to be learned from what happens in the toughest environments, and I hope to share the lessons as we find them (or they find us).

Right now some of the things we are working on include:

  • How to develop better situational awareness of "who's doing what where" and how to use that awareness to accelerate the process of people building relationships.
  • How information flow can be improved "up & down": from the far field where SMS barely works to headquarters and back, with visualization and analysis, as well as between communities finding their own innovative approaches to deal with problems, and "between" the silos of human, animal, and environmental health.
  • How to take information typically consumed individually to create customized group collaboration environments.
  • What is a good mix of existing and new software, services and devices for the problems above? What is the simplest architecture that can keep it all working together in an interoperable, reliable and secure fashion?

Do any of these spark an idea? Please come and share it. It is up to us.