August 23, 2007 § Leave a comment
At 7 am, once a week, across New Zealand, a group of
between twenty-thirty people assemble.
These groups of people don’t belong to a sect.
They have no secret handshake.
No password or code.
They’re simply networking.
So what makes this group so interestingly different?
The difference is insourcing.
So what’s insourcing?
Well, it’s kinda like the other side of the outsourcing coin, you could say.
Outsourcing says: Go ye, into the world, and find some one to do what you do.
Insourcing says: Go ye, amongst thine customers, because they want to pitch in and help you do what you do.
Huh? Customers pitching in to help you?
Well, that’s exactly what happens at the 7am hour at Business Networking International Groups (BNI Groups) across New Zealand.
One of the thirty people runs the hour long networking event: He/she is called the President. In case the president doesn’t show up, there’s the vice-president (who has his/her own duties regardless).
And there’s a treasurer.
A visitor host to help newcomers settle in.
A networking educator who um…educates.
And no one gets a salary.
No one sends in an invoice to head office for work done.
And I know it’s sounding crazier by the minute, but it’s true.
BNI groups put self-interest below group-interest
That is why you’ll find that every member of the group acts as a sales person. Every member tends to want to bring in more members to enrich the group. Every member helps out in the running of the group where possible.
And while the president, vice-president and treasurer get a rebate on their membership, no one else gets paid. Yet they happily participate and grow the business, without asking for a salary or reward.
This is the concept of insourcing.
And this concept isn’t new.
Even as a child you could go back to a point in time, where your parents threw a party. And no, they didn’t have fancy-schmancy caterers. And they didn’t cook most of the scrumptious food either.
Instead all the guests pitched in.
Each of the guest loaded the groaning table with yet one more dessert; yet another salad; yet another lip-smacking dish.
Your parents were no dopes.
They realised they could do it themselves; They could outsource; Or they could insource.
And they did what Wikipedia does
Wikipedia insources. Wikipedia.org is an online encyclopaedia
started by Jimmy Wales in the year 2001.
And as of today, Wikipedia has more than 1,920,000 articles on subjects as varied as you can probably think of. Of course, this
mountain of articles is just in English.
There are 534 000+ articles in French.
260 000+ artículos en Espanol.
242 000+ artiklar in ze Swedish.
And yup, as you guessed there are hundreds of thousands of articles
in Italian, and Polish, and Marathi, from countries and languages
you probably even haven’t heard of yet.
Heck, try outsourcing a job like that!
Every day tens of thousands of Wikipedia ‘editors’ (what else could you call them?) scour the pages, adding information, updating information, and fixing information that’s been defaced. And these Wikipedia ‘editors’ can and do fix pages online, simply because they’re allowed to.
For a large part, the system gives an average Joe the ability to post and update information. And it’s all done by ‘customers’ who are interested in keeping Wikipedia going.
So why would your customers be interested in keeping you going?
I mean, why would they ‘work for you?’
Contrary to what you believe, customers are more than willing to
pitch in. We’ve all grown up to believe that somehow we’re driven
by our selfish desires. And God knows we are. But there’s a group
desire that is bigger than our petty wants. And that group desire
understands and recognises the need to pitch in—without a fee.
You may not believe this to be true.
But ask a customer to proof-read your report, for instance. And
they’ll do it. Ask for volunteers if you need some technical help
on computers. And you’ll get it. Ask for ideas on how to improve your business, and a wall of suggestions will warm you like sunshine
on a freezing day.
Your parents were no dopes, but you sure are!
You are so very enamoured by the great world of outsourcing, that
you’ve forgotten what it is like to insource. You’ve excluded your
customers from pitching in. You’ve shut the door on not just volunteerism, but technical expertise.
Many of your customers are technically superior to both you, and your
‘outsourced person.’ And these customers are more than happy to pitch in. But you won’t let them.
Well, in our business we let them.
Customers act as guides to new customers.
Customers upload information to our servers and notify other
customers about updates.
Customers trawl through our website and spot errors, and help us fix them.
Customers make hundreds of suggestions to fix our business—knowing we will do our best.
Customers help at our workshops, doing various tasks (and we
do ask for volunteers).
This, my friend, is insourcing.
It’s what your parents did at the summer party.
It’s what Wikipedia, iTunes, Amazon.com and hundreds, if not thousands of businesses do all the time. It’s what religions have been successfully doing for thousands of years. It’s what those twenty-thirty people do at every 7 am meeting at BNI, week after week after week.
And you’re not.
Well, about time to change your ways, don’t you think?
August 23, 2007 § Leave a comment
I can remember my first ever marketing consulting assignment.
It was a sofa store.
A reasonably successful store too.
And predictably, my first client wanted more customers.
But wasn’t doing any structured marketing.
Which is where I, the ‘marketing expert’, stepped in.
I was going to show this store not only how to get new customers, but I also had the lofty ideals of ‘reactivating dormant business clients.’
There was just one teeny-tiny problem…
I barely knew how to get new customers myself.
And as for ‘reactivating dormant business clients’…um…I was
going to a workshop to learn how to do that.
I’d run bang, smackity-smack into the ‘Impostor Effect’.
So what’s the Impostor Effect?
The Impostor Effect is where we’re desperately trying to teach
someone else to do something, when in fact, we’re struggling to
achieve that something for ourselves.
So aren’t you being a crook?
Isn’t it unethical to teach something you don’t know yourself?
Actually, no. And here’s the reason.
We’re all impostors.
We’ve always been impostors.
We’ll always be impostors.
Because the truth is, we teach what we most want to learn
So when someone says they want to teach you to get ‘life-balance’, it means their life isn’t quite balanced. When someone says they want to teach you to ‘have more compassion in your business,’ it means they need to learn to ‘to bring more compassion to their own business’.
When someone says they want to teach you to take a three-month vacation, it means they want to learn how to consistently take a three-month vacation, year after year after year.
But here’s where we run into an ugly ego factor
The word ‘impostor’ makes us look like frauds.
Like we were deliberately trying to rip off someone.
How dare this article insinuate that we don’t know what we teach, you think to yourself!
Is this article saying that we don’t know what we’re doing?
Not entirely. You do know what you’re doing, but it doesn’t make
you less of an impostor.
So how do we know that this ‘Impostor Effect’ is true?
It’s true because right after you teach someone about something, you realise how little you know about it yourself.
Right after you give someone a detailed plan of what to do, you
realise how little of that plan you’re implementing in your own
business or life.
If you’re true to yourself, you’ll realise that you’ve always be an
So when Steve Jobs talks about the perfect phone, it’s because hedoesn’t have one yet. When Stephen Covey talks about the ‘Eight Habit’, it’s because he’s just about stumbled on it. When Iyengar (who started the Iyengar Yoga Movement) teaches you, it’s because at every class he’s learning something new.
Being ‘the impostor’ is part of who we are. And like any impostor,
we can either be cocky about our limited knowledge.
Or accept ourselves for what we really are.
We can call ourselves ‘gurus’ till we’re blue in the face
Or learn that we’ll never be a guru, and always the student.
Always ten steps behind what we really need to know.
Twenty-three steps behind where we really need to be.
Confident about what we know, and humble about how much there’s still to learn.
That the ‘self-proclaimed guru’, is anything but.
Understand the importance of being the ‘Impostor’
Way back in 2002, I desperately wanted to work out a system that would enable me to understand ‘how customers think.’
And why ‘customers say no; and what causes them to say yes.
My own struggle forced me to think of ways to resolve that problem.
And the more I spoke about the topic, the more I learned.
The more I sought to explain the topic in words, the more the ‘fog’ lifted.
I’m still learning. Those brain cells are still churning.
I was, and still am the impostor.
I hope I never change 🙂
And I hope you never do too!
August 14, 2007 § Leave a comment
Silverlight Community Technology Preview (CTP) Feb 2007
This white paper provides a high-level overview of the Silverlight
(formerly known as code name “WPF/E”) architecture and how it fits into
the Microsoft offering for building next-generation Web applications.
Also, this white paper provides an architectural review of the
Silverlight technology. (6 printed pages)
Silverlight as Part of a User-Experience Continuum
Deployment and Packaging
Scenarios for Using Silverlight
Silverlight is a cross-browser, cross-platform plug-in for delivering
the next generation of .NET based media experiences and rich
interactive applications (RIAs) for the Web. Silverlight offers a
flexible and consistent programming model that supports AJAX, Python,
Ruby, and .NET languages such as VB and C#, and integrates with
existing Web applications. Silverlight media capabilities include fast,
cost-effective delivery of high-quality audio and video to all major
browsers including Firefox, Safari and Internet Explorer running on the
Mac or on Windows. By using Expression Studio and Visual Studio,
designers and developers can collaborate more effectively using the
skills they have today to create Silverlight web experience.
more than ever, customers are demanding applications and online
experiences that not only meet their individual needs in terms of
effectiveness and efficiency, but also address the perception of
satisfaction the user has with a company’s products or services. In
most cases, the level of satisfaction will have a network and an
emotional effect, shaping perceptions of the company as a whole, and,
as an extension, the perceptions of those with whom the individual
comes into touch. Microsoft acknowledges this connection and has a made
a renewed commitment to user experience (UX) as a part of the
end-to-end experience. UX is more than a pretty UI; it is the
aggregation of the interaction point of a user with an application. Our
mission is thus to enable a great user experience wherever the customer
needs that: on the Web, on devices, in Office, and in Windows.
recent examples of Microsoft’s own investment in UX are Microsoft
Windows Vista and Microsoft Office 2007. By focusing on the end-user
experience first, subtle and somewhat radical changes were made to both
products in order to address productivity and satisfaction.
- Windows Vista
introduces easier ways to visualize and organize your files, media, and
communications. In every case of the UI, a focus on user-centric task
accomplishment and experience was put first. Other examples of focusing
on UX include the new task switcher (Alt+Tab) and Wi-Fi signal
- Microsoft Office 2007
has introduced the new “Ribbon” concept to replace traditional
toolbars. A natural extension, the ribbon reduces time to find any
given feature in an Office application to about 10 seconds.
of these decisions were heavily influenced by design and designers,
working collaboratively with the rest of the development team. To learn
more, visit http://www.microsoft.com/design
Figure1. Microsoft UX continuum
a platform perspective, Microsoft introduces a consistent offering that
uses common skills to address the different application-interaction
surfaces, as indicated in Figure 1.
- ASP.NET AJAX offers the benefits of standard
Microsoft support (around-the-clock support for a period of 10 years)
for AJAX-enabled applications built around Web standards. It allows
standard Web applications to be more effective by improving the
interaction parameters of the application (such as refresh, resource
usage, and navigation).
- For Web experiences that need 2-D
animation, vector graphics, and high-fidelity audio and video on the
Web, Silverlight is being introduced to extend the capability of the
browser to render XAML in addition to HTML. By embracing Web
architecture for development, including industry-standard AJAX
presentation, Microsoft is working to break rich elements on Web pages
out of the “black box” that exists today. As an added benefit, content
authored in Silverlight and ASP.NET AJAX becomes more discoverable
while offering the benefits of being cross-platform (Windows and
Macintosh) and cross-browser (Internet Explorer, Firefox, Safari).
AJAX and Silverlight are designed to be complementary technologies. In
the broader sense, Silverlight can interact with any AJAX application,
both client- and server-side. Examples for such integration include
mapping applications, video playback with rich presentation, and more.
connected applications on Windows, Microsoft provides the .NET
Framework 3.0 programming layer (shipped in Windows Vista and available
for Windows XP) that includes the Windows Presentation Foundation
(WPF). By using WPF, one can create rich, immersive, connected
applications and experiences that can take full advantage of the
Windows platform, including UI, media, offline communication, and
document support. WPF uses a superset of the same XAML that is used by
Figure 2. Microsoft end-to-end offering for UX
Figure 2 shows, Silverlight is not an isolated island; it is a piece in
a consistent end-to-end offering that enables taking application
experiences to the next level. This offering includes server-side
components, tools (Microsoft Expression and Microsoft Visual Studio), and UX technologies.
Silverlight has few basic properties:
- It integrates with various browsers on Windows and on the Macintosh.
- It enables rendering of richer user experiences that are defined by XAML.
- It render media (music and video).
- It enables programming that is consistent with the Web programming model.
- It is small.
Silverlight was designed to address these properties, as Figure 3 shows.
Figure 3. Silverlight architecture
- Lightweight browser plug-in—Silverlight
has Windows and Macintosh modules that are designed to enhance Internet
Explorer (versions 6.0 and 7.0), Firefox 2.0, and Safari browsers. The
December 2006 CTP for Windows is 1.1 MB in size.
- Native presentation runtime—
Software-based browser enhancement that allows rendering of XAML-based
interactive 2-D graphics, text, and media, in addition to the browser
native rendering of HTML. XAML can be used inline, in a file, or in a
- Interactive video and audio—Cross-platform
independent media runtime that can render Windows Media content (WMV
and WMA) in addition to MP3 (will be available after the December 2006
CTP). Video and audio are handled as a media element in XAML, enabling
flexibility in their presentation. Furthermore, the media support
leverages the huge infrastructure and ecosystem around Windows Media,
enabling cost-effective delivery of top-quality media.
- Programming layer—In
consistency with the Web architecture, Silverlight XAML is exposed
the extended markup rendering capability using the same programming
paradigms and practices (on the client and on the server). After the
December 2006 CTP, we will also enable a managed code programming model
using a subset of full CLR that will enhance the programmability side
of the browsers to enable more performant and more scalable Web
Content for a Web page that contains Silverlight elements can be created by using the following tactics:
content package (available after the December 2006 CTP) that contains
XAML, managed code, images, fonts, and media. Streaming media sources
can be referenced from the XAML media elements.
Figure 4. Silverlight packaging (after Feb 2007 CTP)
believe that the flexibility of application packaging and the
consistency of the application architecture with Web standards and
operations will create many opportunities for improving the impact and
effectiveness of Web applications, making applications more scalable,
fault-tolerant, and dynamic (they can change their markup on the fly),
and making content more discoverable.
Web pages that require
Silverlight can detect if the Silverlight plug-in is installed, and can
direct users to download it and install it (either through a redirect
or through an object tag). The Silverlight SDK has documentation on
Silverlight is perfect for the following Web application scenarios that encompass many real-world scenarios:
- Web media— Branded playback with events, video and marketing mix, dynamic videos with ads, audio playback, and so forth
- Rich islands on a page (mini apps)— Casual games and gadgets
- Web visualization elements— Navigation properties, data visualization, and ads
is designed for Web page content that is connected to its host (it will
not work offline), that deeply engages the user, and that can render on
article provided a high-level overview of the Silverlight architecture
and how it fits into the Microsoft offering for building
next-generation Web applications. Silverlight is part of a larger
revolution of the ways applications are designed, built, and delivered.
With markup-based UI and flexible programming models, businesses will
be able to offer better experiences on the right form factor for their
August 14, 2007 § Leave a comment
A Web Services Strategy for Mobile Phones
In most web services presentations, the speaker has a slide of a mobile phone, a PDA, a computer, and other devices communicating with a web service via SOAP and HTTP. You quickly envision a utopia of universal access but overlook the fact that your old Nokia doesn’t do XML web services. If you have a J2ME-enabled phone connected to the Internet, it’s very possible to interact with web services directly. However, the majority of mobile phone users do not have these phones, which means an alternative mode of access must be provided.
Some developers assume that deploying web services is all about publishing a WSDL file. This might be enough for integrators to use your web service, but in order to facilitate widespread adoption of your service, some type of UI for regular users should be deployed to abstract away the technical details. It is possible to dynamically generate HTML web pages with input forms from WSDL files (SOAPClient is a good example of this). This offers a good environment for testing web services and, in some cases, might be all you really need to offer your users. Creating an HTML interface to your web service insures access from any computer, but what about mobile phones?
Mobile web services
Wireless carriers currently offer services that allow information to be “pushed” to your phone or accessed from your phone such as weather, stock quotes, news, traffic, and sports updates. With web services, phones now have the potential to actually consume useful services. But before developing a mobile client, you might want to think twice before taking the SOAP/HTTP route. First of all, turning your phone into a SOAP client might have some performance costs related to slow data speeds and processing both HTTP commands and XML. Secondly, most phones don’t come with web services support built in. Finally, you can hide the web services complexity and leverage existing technologies to make use of their widespread availability. This would require a gateway to sit in between the phone and the web service to handle the passing and conversion of messages but you no longer have to worry about client-side performance issues or even deploying a client.
The gateway would take care of all the SOAP/HTTP request and response handling and then returns results back to the mobile phone in a supported format. There are really only a few means you can rely on being available: text-messaging, voice, and data services. For text-messaging, you can deploy a bot that sits between your client and your service. For voice, you can allow your clients to call a number and issue voice commands by creating a VoiceXML wrapper around your web service. A good example of this is Tellme’s service that gives voice driving directions using Microsoft’s MapPoint web service. For data services, you can have a WAP gateway that takes requests from a WML page, calls the service, and then returns the results back to a WAP browser in the WML format. Some phones have XHTML browsers that you can take advantage of and some even offer development environments that allow you to call the web service directly from the phone. Even though you cannot guarantee that your users will have phones that offer such features now, using data services along with a SOAP messaging library might be a common solution for deploying mobile clients in the future. Development environments such as J2ME and the .NET Compact Framework give developers robust platforms for developing advanced mobile clients. However, for simple clients that mainly access text-based information, deploying a gateway is sufficient.
Deploy Gateways for Maximum Availability
When deciding what kind of client to deploy, your final decision should be based on making the client available to as many users as possible. This makes deploying a gateway the best solution. You no longer have to worry about technology support or even client application installation. For example, if you deploy a Short Message Service (SMS) gateway, you have just turned every mobile phone into a potential client. By using SMS you can also take advantage of its “store and forward” features which guarantee message delivery. Sending a SMS message from a client is pretty straightforward, but messages sent between service providers and SMS gateways are quite the opposite. The SMS Forum recently announced a plan to encode these messages using SOAP and HTTP to insure interoperability — another testament to the adoption of web services.
VoiceXML is a language for building voice applications much like you hear when calling customer service hotlines. It is an XML-based standard developed by the W3C’s Voice Browser Working Group. Most VoiceXML developer portals give you access to a phone number for testing your application; however, VoiceXML is not limited to phones and can actually be accessed by any VoiceXML-enabled client. This client can be the usual phone, but it could also be an existing Web browser with a built in VoiceXML interpreter. A good example of this is the multimodal browser being developed by IBM and Opera based on the XHTML+Voice (X+V) proposed specification. The term “multimodal” simply refers to multiple modes of interaction by extending user interfaces to include input from speech, keyboards, pointing devices, touch pads, electronic pens, and any other type of input device. The W3C also has a Multimodal Interaction Working Group that is developing standards to turn the concept of universal accessibility into a reality. The basic concept of VoiceXML is to issue prompts to a user and then have that user respond using their voice. Once the user’s voice is captured, the voice application can perform a specific task and return the results. Due to the inaccuracies of voice recognition, I highly recommend writing applications that accept a predefined set of commands in combination with very little dynamic speech input from the user.
Use J2ME for Advanced UIs
J2ME is gaining a lot of momentum as new J2ME-enabled phones hit the market. With every major manufacturer embedding Java on some of their phones, Java in the mobile space is no longer hype. An interesting note on J2ME is that all Mobile Information Device Profile (MIDP) implementations must provide support for the HTTP protocol. This guarantees the availability of HTTP as a transport mechanism for web services. There is currently no standardized web services support for J2ME, but JSR 172 defines a J2ME Web Services Specification that will eventually provide standard access from J2ME to web services. In the mean-time, you can use a third party library such as kSOAP. J2ME also has SMS support through the Wireless Messaging API (WMA) optional package.
Text-messaging development might sound simple, but it is the most confusing route to take. I mentioned SMS earlier, but we also have EMS, MMS, and other Instant Messaging protocols on the scene. AOL Instant Messenger (AIM), MSN Messenger, and Yahoo Messenger all offer bridges from their protocols to SMS. T-Mobile even has AIM embedded into some of its phones. An easy way to build a service would be to connect to one of these popular IM protocols to avoid dealing with the SMS mess. When you build SMS applications directly, you have to worry about possible hardware requirements, SMS gateway deployment, and carrier partnership. Don’t forget, you will require some kind of phone number for users to access your application and, since you are connecting to a cellular network, a business account.
Most wireless carriers allow anyone to send SMS messages to their customers via email. Although users cannot reply to the sender of the email, this is useful for notification messages. You have to be a “premier partner” to be able to send and receive, but the average programmer can use an SMS Broker to have the same access without going broke. SMS Brokers partner with a cellular service provider and then lease access to developers. Simplewire offers one such development environment for creating and testing your wireless messaging application. They have a free evaluation version and they also offer paid commercial deployment packages. ActiveBuddy’s BuddyScript SDK is very complete solution for developing, testing, and deploying your interactive agent. The BuddyScript SDK includes its own scripting language, IDE, server for deploying agents, and much more. You can launch your interactive agent to mobile users via SMS and WAP without setting up a relationship with a wireless carrier. The BuddyScript Server included in the SDK can exchange data via SOAP over HTTP. The only downside to the BuddyScript approach is that you are pretty much tied in to their development platform.
For the tech savvy, you might be able to buy a data cable for your GSM phone and, with the appropriate software, process the modem commands. Of course this is not suitable for a commercial application, but they do have dedicated GSM modems. So, theoretically, you can get a personal account with a wireless GSM carrier, take out the SIM card, put it in a dedicated GSM modem, and hack your way through to make it work. And, on the subject of hacking, I must mention Kannel, an open source WAP and SMS gateway.
Since you cannot view WML on regular browsers, you will need a WAP browser emulator for testing your WAP applications. WAP also allows applications to initiate sessions through the use of the use WAP Push Access Protocol. By creating push-enabled applications, you can implement asynchronous messaging. Openwave provides a WAP Push Library as part of its Openwave Mobile Developer Toolkit (OMDT). The OMDT is an excellent place to get started with its inclusion of emulators, messaging APIs, and support for the latest technologies in the mobile world. Nokia also has an excellent resource page that has tools and documents to help you get started.
If you don’t have access to a WAP gateway don’t forget about the open source Kannel project. The open source crowd will also enjoy Enhydra’s open source Java/XML application server. Although you can serve up WML pages using any Web server, Enhydra provides an excellent framework for separating presentation from code. Using Enhydra’s XMLC, you can convert a specially formatted WML document into objects that you can access from your Java code.
The Wireless Messaging API (WMA) package gives you access to SMS functionality but there are third party packages that are more suitable for XML messaging. kSOAP, another open source project from Enhydra, is a lightweight SOAP implementation suitable for J2ME. If you think SOAP is too bloated and want to shave off some overhead, Enhydra also has an XML-RPC implementation (kXML-RPC project). For the Java RMI and JMS fans out there, there is a J2ME RMI optional package and a commercial wireless JMS solution available. To speed up your development efforts, you might want to consider using one of several SDKs available. Sun and Nokia’s toolkits can run as standalone tools and also integrate into SunONE and JBuilder.
.NET Compact Framework
The .NET Compact Framework provides a robust environment for developing mobile applications. In traditional Microsoft point-and-click fashion, you can have an application running with minimal effort. If you are a .NET developer, you will enjoy its .NET Framework heritage and its integration with Visual Studio .NET. The .NET Compact Framework will definitely have its biggest impact in the PDA market where Windows enjoys some success. The downside is that the .NET Compact Framework has no market share whatsoever in the mobile phone space and it will try to break into a tight market.
With the availability of packet-switched, always-on networks for mobile phones becoming more widespread, mobile access to data will become easier than ever. web services seem like the natural solution for integration problems, but mobile phones do not have the privilege of guaranteeing support for the core web services technologies. However, you can still effectively deploy a web service for mobile clients by deploying a client interface using existing technologies available. Technologies such as SMS, WAP, and VoiceXML can be utilized to make this possible. As more mobile phones support J2ME, you can even choose to deploy a pure SOAP client without the need for a middleman.