Welcome to Atalasoft Community Sign in | Help

A couple of days ago, I wrote about the social circles concept that a UX Researcher at Google is evangelizing. Here is the social circles presentation. The important part starts on Slide 47:

People don’t have one group of friends.

Making people create one big friends group has many of the same problems as planning seating arrangements at your wedding. […] Anyone who is married and went through this will remember how stressful it is.

Yet that’s what is happening online! Everyone being shoved into this big bucket. People don’t have one group of friends. Offline, people have multiple groups of friends that form around life stages and shared experiences.

This is sort of a problem with Facebook for me. Right now, it’s mostly managed by maintaining a separate profile on LinkedIn for my professional network, which brings up another advantage Circles would give Google – the ability to acquire LinkedIn.

Right now, if Facebook announced that it acquired LinkedIn, I’d probably delete one of my profiles. There’s just no way I could imagine them doing it the way I’d want it done (total separation). On the other hand, not withstanding Google’s Buzz debacle, if they do a good job with Circles, then I could see them incorporating LinkedIn or other networks.

The other obvious option is Ning. In Ning, circles are the default, as it’s a way of creating niche social networks. If I belong to different networks on Ning, my friends in one don’t even know I’m in another, let alone what’s going on in the network. Each Ning network is a natural fit for Circles.

This gives Google some options for growing their networks fast, and in a way that doesn’t break privacy. Even better, it’s a strategy that Facebook won’t want to copy as a single network seems to be part of their DNA, so it gives Google a vector of innovation to differentiate itself from Facebook.

Paul Adams, a Google UX Researcher, is writing a book called Social Circles, which you can get a good preview of in this presentation.

Don’t be put off by the 216 slides – it’s a quick read. The key insight is that the Facebook model of a single group of friends doesn’t match real-life social circles that have mutually exclusive friends and that you might want to communicate to each differently.

The document itself is a call to action to Google to recognize that the web is undergoing fundamental change, and in some ways is reminiscent of Bill Gates’s memo about the Internet in 1995.

Paul Adams:

The social web is not a fad, and it’s not going away. It’s not an add-on to the web as we know it today. It’s a fundamental change, a re-architecture, and in hindsight its evolution is obvious.

[…] Make no mistake about this. Everyone in this room will need to learn how to design social features on websites.

[…] When we use search engines today, it’s a pretty solitary experience. We get millions of web pages in our results, yet we don’t see any other people.

Bill Gates:

Browsing the Web, you find almost no Microsoft file formats. After 10 hours of browsing, I had not seen a single Word .DOC, AVI file, Windows .EXE (other than content viewers), or other Microsoft file format.

[…] One scary possibility being discussed by Internet fans is whether they should get together and create something far less expensive than a PC which is powerful enough for Web browsing.

[…] The Internet is a tidal wave. It changes the rules. It is an incredible opportunity as well as incredible challenge.

The Gates memo is reminder of how a technical CEO is critical in leading a software company. It’s full of detailed instructions that only a former programmer would be able to understand.

Eric Schmidt, Sergey Brin and Larry Page are all very technical themselves, and yet this call to arms comes from someone else in the organization. I’m sure Paul Adams is very skilled, but not knowing the internal politics of Google, it’s not clear if his call to action will cause change. It’s not enough to be technical, you also must lead. In the “Next Steps” section of the Gates memo, he says:

I want every product plan to try and go overboard on Internet features. One element that will be crucial is coordinating our various activities. The challenge/opportunity of the Internet is a key reason behind the recent organization.

Google needs a similar message about social features coming from Schmidt.

Last year, I wrote a review of Star Trek from an ECM Perspective, and I’ve been looking out for other movies that have an interesting collaboration angle, but couldn’t think of one until last week when I went to a midnight showing of the new Twilight movie.

Spoiler Alert: I have to give away some details of the movie (and the next one) in this review.

There are at least three kind of telepathic collaboration in Twilight. Edward can read thoughts (except for Bella’s), the wolf pack is connected to each other telepathically, and Alice can “follow” decisions and see the future after a decision is made.

I think a lot could be said about how the wolf pack telepathy is like Facebook (Jacob talks about the drama of a love triangle being broadcast around the wolf pack). And perhaps Alice has some kind of super-twitter that people can’t help using to blurt out their plans to her.

But I think the most interesting Social Media aspect to Twilight is Bella. Bella’s thoughts cannot be read, and in the Twilight world, privacy is a super-power.

And, it’s not just incidental, Bella’s ability to keep her thoughts to herself is an integral part of the plot. For example:

  1. It’s part of Edward’s attraction to her (the other part being his insatiable desire to have her for dinner)
  2. It probably saved her life with the Volturi in New Moon
  3. She uses it to mask feelings she might have for Jacob.
  4. (Breaking Dawn SPOILER) Her privacy abilities expand in Breaking Dawn to include being able to shield others.

In any case, with the world moving towards more sharing and openness, it’s interesting to remember the power of privacy as well.

1 Comments
Filed under: ,

There was a leak today that Google is building a Facebook competitor called Google Me (to go along with Orkut, Wave, and Buzz). GigaOM reports:

Could Google put together a credible competitor to Facebook? Anything is possible, but so far there’s little reason to believe that the search giant could come up with a service that represented a real threat. Orkut may be popular in South America and India, but has shown no signs of growing outside of those countries. Could Google use it as the basis for something that takes parts of Google Buzz, parts of Google Profiles, parts of Google Wave and parts of Blogger to construct a comprehensive social network? Theoretically, but that sounds more like a Frankenstein-style strategy than anything else — stitching together pieces of half-dead services and hoping they come alive.

The problem with the Google social networks aren’t their feature sets, it’s that no one uses them (because no one uses them). Going right up against Facebook with just comparable features is doomed to failure, because no one really has a feature problem with Facebook.

The problem they need to solve is how do they get a person sitting at their computer to open an account to use a service that is useless until others join. Their options:

  1. Sign them up automatically – this has already spectacularly failed with Buzz.  Perhaps there’s a better way.
  2. Pay them.
  3. Make it so that signing up makes some other Google service better.

And, they need to incent people to invite others in. Options are

  1. Sign up all of your email contacts and connect you to them (oh yeah, that didn’t work)
  2. Pay them.
  3. Make is so that getting others to join makes some other Google service better.

Automatic sign-up has already failed, and I can’t see Google resorting to paying people. So, the only path is to somehow augment all Google services with the data from their social network (in a way that preserves privacy). The huge advantage that Google has over Facebook is that they can incorporate the data into search results without making the data indexable. Facebook has to either recreate all Google services or open up their data.

Here are some ideas for how Google services can be augmented with social data:

  1. My registered likes and interests should make my search results better.
  2. Likes and interests should be used by Google reader to suggest articles and feeds.
  3. Likes and interests should augment maps with places I like
  4. Let advertisers target search keywords and demographics
  5. My network’s likes should augment my search results. When I search for a product, let me know that someone likes an alternative.
  6. Let me designate a search as wanting a network result page. Like Quora, but only for my network (I do this ad-hoc on Facebook already).
  7. Highlight mail that is from someone in my network.

After doing that, they can try to use my use of other services to augment the network. I would love if more things added to my timeline instead of sending e-mail. Let me designate filters that divert there instead. There are definitely some feeds that I would divert there as well.

Essentially, Google needs to fight the network effect of Facebook with one of their own (between their own services).

There is an ongoing lament among programmers of a certain age that there are no entry-level programming environments for young kids and teenagers to learn on. Since I am of that age, I understand exactly what they mean, but I don’t agree that there are no choices.

Today, on Hacker News, this four-year old article by David Brin in Salon (Why Johnny Can’t Code) made the first page. It’s a good read and an accurate overview of the debate – namely, computers from the ‘80’s came with BASIC, which was simple enough for anyone to pick up and learn how to program, and now, we don’t have an equivalent. Here’s a typical passage about the difference:

The "scripting" languages that serve as entry-level tools for today's aspiring programmers -- like Perl and Python -- don't make this experience accessible to students in the same way. BASIC was close enough to the algorithm that you could actually follow the reasoning of the machine as it made choices and followed logical pathways.

Luckily, I keep a Commodore 64 Programmer’s Reference Guide on my work bookshelf for nostalgic reasons. Here’s one of the first BASIC programs they list:

10 PRINT "YOUR NAME":INPUT N$
20 PRINT "HELLO," N$

Here it is in Python:

n = raw_input("YOUR NAME ")
print "HELLO, " + n

The Python version doesn’t have line numbers and doesn’t need you to use dollar signs to designate string values. I can’t imagine that anyone who could learn the first one would have any real problem with the second.

But the author is concerned with coding math problems like statistics.  Something where you can follow the logic. Here’s a BASIC program on page 20:

5 PRINT ""
10 PRINT "MONTHLY INCOME" : INPUT IN
20 PRINT
30 PRINT "EXPENSE CATEGORY 1" : INPUT E1$
40 PRINT "EXPENSE AMOUNT" : INPUT E1
50 PRINT
60 PRINT "EXPENSE CATEGORY 2" : INPUT E2$
70 PRINT "EXPENSE AMOUNT" : INPUT E2
80 PRINT
90 PRINT "EXPENSE CATEGORY 3" : INPUT E3$
100 PRINT "EXPENSE AMOUNT" : INPUT E3
110 PRINT ""
120 E=E1+E2+E3
130 EP=E/IN
140 PRINT "MONTHLY INCOME: $"IN
150 PRINT "TOTAL EXPENSES: $"E
160 PRINT "BALANCE EQUALS: $"IN-E
170 PRINT
180 PRINT E1$"="(E1/E)*100"% OF TOTAL EXPENSES"
190 PRINT E2$"="(E2/E)*100"% OF TOTAL EXPENSES"
200 PRINT E3$"="(E3/E)*100"% OF TOTAL EXPENSES"
210 PRINT
220 PRINT "YOUR EXPENSES="EP*100"% OF TOTAL INCOME"
230 FOR X=1 TO 5000:NEXT:PRINT
240 PRINT "REPEAT? (Y/N)":INPUT Y$:IF Y$="Y" THEN 5
250 PRINT "":END

This example has looping, conditionals, and math. The reverse heart clears the screen (platform specific), line 230 is a delay, and it uses a conditional goto for a loop. Here it is in python (I tried to keep it as close as possible, also using a platform specific clear screen which will work on the Mac and Linux – use os.system(“cls”) for Windows):

import os
import time

while True:
    os.system("clear")
    IN=float(raw_input("MONTHLY INCOME"))
    print ""
    E1CAT=raw_input("EXPENSE CATEGORY 1")
    E1=float(raw_input("EXPENSE AMOUNT"))
    print ""
    E2CAT=raw_input("EXPENSE CATEGORY 2")
    E2=float(raw_input("EXPENSE AMOUNT"))
    print ""
    E3CAT=raw_input("EXPENSE CATEGORY 3")
    E3=float(raw_input("EXPENSE AMOUNT"))
    os.system("clear")
    E=E1+E2+E3
    EP=E/IN
    print "MONTHLY INCOME: $",IN
    print "TOTAL EXPENSES: $",E
    print "BALANCE EQUALS: $",IN-E
    print ""
    print E1CAT,"=",(E1/E)*100,"% OF TOTAL EXPENSES"
    print E2CAT,"=",(E2/E)*100,"% OF TOTAL EXPENSES"
    print E3CAT,"=",(E3/E)*100,"% OF TOTAL EXPENSES"
    print ""
    print "YOUR EXPENSES=",EP*100,"% OF YOUR INCOME"
    time.sleep(5)
    print ""
    Y=raw_input("REPEAT? (Y OR N)")
    if Y=="N": break
os.system("clear")

So, we have to introduce the concept of import and string to float conversion needs to be explicit, but is this much more difficult? I can tell you that flipping through the C64 programmer’s reference, it doesn’t try to coddle you (it wasn’t written for kids). The real first program (which I skipped) is:

10 OPEN 2,8,6,"0:STOCK FOLIO,S,W"
20 OPEN 1,1,2,"CHECKBOOK"
30 OPEN 3,4

This is under a heading, “EXAMPLE OF ACTUAL STATEMENTS” in the introduction, which is on the third page of text after the table of contents. To be fair, the syntax of OPEN is briefly discussed, but is this really the best first program?

The one real difference is that a C64 boots into BASIC and you can start typing a program as soon as it’s up. On a Mac, you have to understand how to make text files, open a Terminal, and run python.  After that hurdle, it’s very similar. On Windows, you need to install python.

I think a lot of the nostalgia of what it was like to program these old machines just doesn’t match what it was really like.  The included documentation wasn’t necessarily kid friendly, but there were other sources of information (I had a ton of Compute! magazines and other books).

If you are a beginner, please check out Learn Python the Hard Way. It doesn’t assume that you know anything – it covers getting python installed (not necessary on a Mac) and how to use a text editor. I think it closely matches the kind of experience I and other older programmers remember having in BASIC.

Yesterday, I wrote about how the iPhone and Android phones are becoming more different from each other. I wrote:

The overall vector Google is trying to establish is to move as much to the cloud as possible, and Apple is going the opposite way by innovating the phone and its software. Each is playing to their strengths, and the phones are starting to diverge a little. In the last generation, they were more comparable. But, in this one, you have a real choice to make, which is the point of innovating along one vector—to establish differentiation.

Last night I watched the iPhone keynote and I realized that I don’t really have a choice. I value the direction that Apple is moving in, and I definitely do not want the phone Google is setting out to build. The differentiation has left me with no choice.

When I read Michael Arrington’s take on Android vs. iPhone on TechCrunch it solidified that thought. Arrington feels about Android, the way I feel about the iPhone—neither of us consider the other a viable option. He says:

Last year I left the iPhone and switched to Android largely because of the amazing usefulness of Google Voice, and only Android devices truly let you take over your phone with a Google Voice app and have the perfect experience.

iPhones will probably never have Google Voice (or anything like it), so if you need that, you don’t have a choice. For the opposite perspective, you can read MG Siegler’s review of the iPhone:

That said, in my view, there is still no Android device that is better than the iPhone 3GS. And so obviously, the iPhone 4 just widens the gap.

The fact of the matter is that while the software may be getting there from a practical perspective, it still lacks the polish of the iPhone OS (now iOS).

[…] Overall app quality on Android also still lags behind the iPhone. And the fact that you have to use third-party task killing applications to get devices like the EVO 4G to run the way it should, is completely unacceptable from a users’ perspective.

Where you do have choice is where the offering is basically undifferentiated on the axes you care about. So, if you like Android, you can choose between a Droid, EVO, Nexus One, or Incredible. If you like iPhones, you can choose between Black and White or 3GS vs 4 (and storage size).

Reducing choice isn’t necessarily bad. What each is trying to do is take a segment of the market and make their product more perfect for them. The more squarely you are in their target, the more you are better off. Sure, you don’t have choices, but there’s a perfect device for you. Think of the person that wants an Android phone for some things and an iPhone for others–they have more choices, but neither is perfect.

The media portray this as a race, trying to figure out who’s ahead. I don’t think of them as being in the same race (they are running in opposite directions)—I’m not even sure they’re playing the same game.

A few months ago, the Business of Software site released this Geoffrey Moore presentation about innovation.

One concept he talked about (which is elaborated in his book, Dealing with Darwin) is establishing vectors of innovation.

Jump to 2:10 in this video, and watch to 3:00 (but, really, watch the whole thing at some point). Simply put, Moore suggests establishing a single direction you are going to align your innovations against. You choose one that your competitors will be unable or unwilling to follow. This is the opposite strategy to “letting a hundred flowers bloom”, where you don’t specifically set a direction for innovation, but let lots of things happen and hope that one will be good. He contends that the vectors are all pointing in different directions, so that they sum to near zero when added together.

Obviously, the two different innovations don’t cancel each other out. The zero effect comes from neither innovation being good enough to separate the product from its competitors, and that the best way to do that is to pile on innovation over innovation that each go in some similar direction.

It’s with that background that I think it’s worth examining what Google and Apple are doing in mobile.

A few weeks ago, at Google I/O, Google announced the next version of Android, and highlighted its competitive advantages over the iPhone. They were carefully chosen to be areas where Apple could not or would not follow. For example:

  1. Over the cloud synching—Apple is clearly weak here. I think they will eventually try to match this in some way, but it won’t be easy for them. Google, unlike Apple, already has much of your data in their online databases.
  2. Wifi tethering—Of course Apple wants this, but they can’t because of AT&T.
  3. JavaScript speed—Google’s vision absolutely depends on JavaScript being fast. Apple touts Safari as a fast browser, so they’re trying to match, and they want to control all of the important software on the phone.
  4. Flash—Apple won’t follow, so if there’s a good reason to have Flash, Google will win here.

Yesterday, Apple responded in ways Google will have a hard time to follow:

  1. Hardware design—The A4, new glass, retina display, antenna made from the case, HD Video, gyroscope, noise cancelling mic, etc. Apple squarely takes Google out of the picture and makes them depend on handset manufacturers to match them.
  2. iMovie—sets the bar for phone software. It absolutely cannot be done in HTML5, and Google probably can’t match it.
  3. Battery life—This is a multi-pronged attack. First, they miniaturized everything to make room for a larger battery. Second, they implemented multi-tasking in a power conscious way (Larry Page’s quote will make people think that Google hasn’t solved it). And, finally, their SDK has recently added power profilers so that developers are more aware of their power usage. They are getting 300 hours idle, and meanwhile, the advice if you use EVO or Incredible: “Keep WiFi, GPS, 4G off until it’s needed”

The overall vector Google is trying to establish is to move as much to the cloud as possible, and Apple is going the opposite way by innovating the phone and its software. Each is playing to their strengths, and the phones are starting to diverge a little. In the last generation, they were more comparable. But, in this one, you have a real choice to make, which is the point of innovating along one vector—to establish differentiation.

2 Comments
Filed under:

I saw this report about Steve Ballmer having some time at the WWDC keynote via DaringFireball.

7 minutes of the June 7 keynote by Apple CEO Steve Jobs has been blocked off for a presentation by Microsoft (MSFT) to talk about Visual Studio 2010

This is so crazy, that I just can’t believe it, but let’s just assume that Ballmer is speaking at WWDC about Visual Studio – what could that be about?

Visual Studio for iPhone

My employer, Atalasoft, is a VS Partner, and I have 3 versions of Visual Studio on my machine. I also own a MacBook, write iPhone apps, and I’m currently writing a book about iPhone development for Manning. I am intimately familiar with VS and Xcode. I would absolutely love to use VS to make iPhone apps for work. Xcode isn’t bad, but VS fits in our process already. At home, I have a Mac and an svn server, so Xcode is what I want, but at work we use Visual Studio, C#, and TFS for all of our work already—it would just be easier to use them for iPhone too.

Visual Studio 2010’s release concentrated on extensions, specifically the kind that alternative languages need. F#’s support was built on those extensions, as are the Iron series languages. It’s meant for .NET supporting languages, but it doesn’t have to be. There is no technical reason why VS couldn’t be extended to support Objective-C, LLVM, etc. – they can even stay within the bounds of Apple’s Section 3.3.1

3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).

But why would Microsoft want to do this? I don’t think they would.

How MonoTouch does it

If 3.3.1 was extended (or clarified by Apple) to allow the Mono style of intermediary layer, then I could imagine it being interesting to Microsoft.

In Mono, there is a 1-to-1 correspondence between a CocoaTouch API call and a .NET function wrapped around it. Every single class and method has been wrapped this way, so the feel of programming against the phone API is just a change to the syntax of the language, not a new API – as if Apple just supported C# syntax. You also get .NET system libraries and garbage collection, but your code is very iPhone targeted, which is what Apple wants.

You can read about MonoTouch from Mono’s lead, Miguel de Icaza.

We bring the C# language, garbage collection, a type safe system […] while getting access to every single iPhone OS API that they want to.

We […] are not really an abstraction layer over the iPhone OS, but merely a compiler that talks to the native APIs.

We released the iPad support 24 hours after Apple released the SDK. We released the iPhoneOS 4.0 support within days of the release (mostly because every one of us was pretty bummed out). Our APIs are a 1:1 mapping to the iPhone APIs.

But, MonoTouch still requires you to use Apple’s Interface Builder to build your GUI. It still requires you to use a Mac.

If Microsoft adds a .NET wrapper around CocoaTouch and also starts generating GUI resources from their designer, it would make it possible to develop iPhone apps on a Windows machine with standard tools.

Enterprise Development (and RIM and Android)

Jobs is probably hearing that the corporate world wants this. RIM and Android both use Java tools, and Jobs needs to beat them in business (or at least challenge them).

Even if Jobs doesn’t allow these apps in the App Store, he’s already said that MonoTouch apps are allowed in the Enterprise Developer Program with internal distribution. This might be enough, if there was also Visual Studio support. Enterprises make tons of custom apps that they never intend to distribute – they need a way to make those quickly, and a lot of them already know .NET and Visual Studio.

Another reason Apple might be ok with this is that the Unity game framework’s iPhone support is built on top of  .NET (via Mono), and Apple can’t afford to lose games made with Unity. They aren’t rejecting them yet, and games don’t really lose much when written on a compatibility layer because they seldom use built-in components or rely on device features.

So, I don’t think Ballmer will be at WWDC, but he’s proven that he loves developers, and developers want to make iPhone apps, so maybe … (nah, no way).

Yesterday, I attended GCC’s Computer Science Day where they hosted a couple of hundred high school students and invited software professionals and colleges to speak to them. There were sessions for both the students and their teachers. As part of the event, I sat on a panel to answer questions about what it was like to work in IT.

One of the questions was: “how does someone get started?”

The software industry is probably one of the easiest to just get your own experience. I don’t mean just reading a book and playing around—I mean real products that you reference on your resume.

Here are a few ideas for things you can do without anyone’s permission:

  1. Start or join an open-source project. If you can’t program yet, do QA or documentation (every open-source project is dying for that). There are projects for any possible interest. Go search sourceforge, codeplex and google code.
  2. Start a website about some niche interest you have. The purpose is to learn HTML/CSS, a web framework (pick anything: PHP, Django, Ruby on Rails—whatever you like), graphic design and to get better at writing. Do it about anything you already are interested in—one simple idea is to make a comprehensive list of X and a good way to browse and search it. X is anything you like: great guitar solo videos on youtube, Wii game reviews, bike paths – many large sites got started this way (TripAdvisor, Low End Mac, Digital Photography Review, even IMDB)
  3. If there’s some social network that you are spending a lot of time on—learn how to use their API and make something useful for it. A facebook app, a twitter client—whatever you choose, you can use the social network to try to spread it.
  4. Do you have a smart phone? Make an app. You might make money, but I wouldn’t worry about that if you don’t. Just getting an app into the iPhone AppStore or Android marketplace will be a huge achievement. (our Chief Architect, Steve Hawley, did the equivalent of this for the Apple II – released and sold a game called Suicide! when he was 13)

And here are ideas where you’ll need only a little permission

  1. Go to any small non-profit in your area that you like and help them get on Facebook and put up a two page site.
  2. Go to any small (locally owned) business that isn’t on the web and barter your services. It will help if you have a portfolio already, and if it’s good, then get paid for this work, if you are still building it, then barter. (my advice: if you have to work for free, work for yourself, a non-profit or open-source).
  3. Are you already waiting tables, delivering papers or some other standard teenager job? Does the company have a website or any other IT needs? Volunteer to do it for them (this is how I got started – I was filing in an office, but I knew how to make spreadsheets, so I converted all of their paper sheets to Lotus 1-2-3 – before long I was making macros, programming little dBase III+ apps, etc.).

If you’ve done any of these things before trying to get an internship, your resume is going to stand out. If you’ve done this and live in Western MA, get it touch with me when you get to college—Atalasoft is looking for you.

I’ve been having a hard time understanding why Diaspora would be better than Facebook. For the uninitiated, this NY Times report has the basic info:

As they describe it, the Diaspora* software will let users set up their own personal servers, called seeds, create their own hubs and fully control the information they share. Mr. Sofaer says that centralized networks like Facebook are not necessary. “In our real lives, we talk to each other,” he said. “We don’t need to hand our messages to a hub. What Facebook gives you as a user isn’t all that hard to do. All the little games, the little walls, the little chat, aren’t really rare things. The technology already exists.”

I am fully capable of running my own server once the software is available, but I can’t figure out why I’d want to. My problem with Facebook isn’t that they aren’t running on my hardware – my problem is that they don’t share my attitude towards privacy. Spreading my data to 1000’s of unknown servers isn’t really going to help me solve that problem. I trust my friends, but I certainly don’t trust all of their judgments about trusted distributed social network providers – after all, they chose Facebook.

I can see Diaspora being used to create internal walled-garden networks (like the original Facebook was for colleges), but that wouldn’t replace Facebook, it would just be a different social network (kind of like what Ning does for AIIM’s social network).

In any case, solving the privacy problem is actually a lot easier, and in the hopes that someone will see this and do it, here’s something simple that would solve it for me:

Create a service that:

  1. Creates two Facebook profiles that friend each other, I friend one of them. Let me create more if I use different privacy profiles
  2. Automatically monitor and let me see what each friend can see of my profile
  3. Automatically monitor what google, the Facebook API, non-friend Facebook accounts and apps on friend accounts can see, and tell me if it changes.
  4. Watch Facebook’s terms of service and privacy settings and let me know if there’s something I should be doing
  5. Clearly explain what all of the privacy choices mean and perhaps let me automatically set them to some common profiles.

It’s basically a credit report for privacy. You could include other networks as well.

I would expect to pay for this service.  Perhaps you can get one report for free each year and pay for monitoring.

I just read How to Design a Popular Programming Language, which is very similar to Paul Graham’s Being Popular essay from 2001 about language popularity. Both make the point that languages become popular because they become the default way to program a very popular platform.

This is a point I make often. I care about what language I program in somewhat, but I will do whatever it takes to get the deployable I want. So, at Atalasoft, since I want .NET assemblies, I need to use a .NET language. For the iPhone, I need to use Objective-C. It wouldn’t matter if I prefered Java (I don’t), because Java can’t make what I want.

On .NET I have a few choices. There is basically no output difference between C# and VB.NET, so I can consider the language itself apart from what it makes. Atalasoft primarily programs in C#, but nothing we make in C# couldn't be made in VB.NET. The choice is arbitrary and largely a matter of taste.

Now, with Visual Studio 2010, F# is thrown into the mix. Atalasoft has a close tie to F# because one of our DotImage architects, Rick Minerich, is an MVP for Microsoft (largely because of his F# community contributions) and is a co-author on a new F# book coming from Wrox, Professional F#. So, we tend to know more about F# than most development groups.

Like VB.NET, F# can create any result that C# can, since it has full support for the .NET object model. If tomorrow, all of our C# code was in F#, no one would know. But, C# is by far the dominant language on .NET – on many platforms, dominance has advantages.

Looking at the first article I linked to, we see these reasons why dominant platform languages are hard to displace:

  • Nobody has figured out how to make cross-language interoperability work well.
  • The network effects from language adoption are immense. Programming is, despite appearances, a deeply social profession. To write successful software quickly, you must exploit the skills of other programmers — either directly, by hiring them, or indirectly, by using library software they've written. And once a language becomes the most popular in a niche, the supply of both programmers and libraries for that language rapidly accumulates to the point where it becomes economically irrational to use any other language.

Well, Microsoft has figured out how to make cross-language interoperability work well – we have VB.NET customers using our C# code quite happily. Microsoft has also made C++ work pretty well with C#, and we have customers who do that as well. On .NET, you can freely mix any well-implemented .NET language.

The second point is more convincing and it breaks down like this:

  1. It’s easier to hire developers for more popular languages
  2. It’s easier to find libraries for more popular languages

Well, #2 isn’t true for .NET languages, because of the good cross-language interoperability. So, F# can displace C# if either

  1. More Developers learn F#, getting rid of the only reason not to use it instead of C#

    or
  2. F# can take advantage of some part of the .NET platform that C# cannot, and that part of the platform becomes popular (virtually forming a new platform that it can dominate)

Either of these might actually come true – some things that may cause it to happen

  1. Developers might form a taste for F# coding – it’s got a brevity and expressivity that might attract developers that care about that kind of thing.
  2. Many-core is coming and F# is designed to produce code for it, whereas mutable state in C# will hold it back.
  3. Functional programming and language-oriented programming are getting more popular and might displace object-oriented programming for more and more tasks.  These styles are both natural in F# and not really possible in C#.

F# is not without its problems – the main being secret advantage #3 for dominant languages – code generators. In Visual Studio, if I am making a WinForms or WebForms app, VS generates a lot of code for me, but only C# and VB.NET, not F#, yet.

So, it’s very possible F# could displace C# on technical merits, but it will still have a lot to do to overcome things like industry momentum, politics and other factors that will favor C# for some time. One obvious way to overcome that is a popular killer app that is widely known to be made in F# and has either brevity or many-core advantages that C# can’t replicate.

1 Comments
Filed under: ,

At the Business of Software conference in 2008, Paul Kenny gave a Sales 101 presentation that opened with 3 questions:

  • Agree or Disagree: I love to sell
  • Agree or Disagree: When I put my mind to it, I can be great at selling
  • Agree or Disagree: I love being sold to

I raised my hand for the last one—but what I really love is people offering to solve problems I care about.

The basic problem Kenny identified is that people don’t like being sold to “badly”, and that one of the issues is that salespeople don’t do the basic research.

It’s annoying when people cold-call me and don’t have any idea what I do, what I would need, or where I am – even though that information is easy to find out.

But, I’ve found a coping mechanism that is working for me.

My first response back to a personal email (not spam) from a salesperson is to just lay out what they would have discovered if they did any research, and what problems I’m willing to use others to try to solve. I make sure to give a lot of details about what our company does (it’s on our website, but I’m not trusting them to go there).

The last few times I have done this, I’ve entered into interesting e-mail exchanges that were actually useful for me to have, even if I don’t end up buying anything. One salesperson realized right away that they didn’t have what I needed, but offered two totally different services they have that I didn’t even realize were possibilities – again, nothing might come of it, but things can change. Another got me first in line for support when I complained that I was having issues with one of their products that I otherwise love.

So, if you’re the kind of salesperson that actually does research (and sees this blog before calling me) here’s what I want: I want to reach more technical decision makers in companies that create and sell document-management systems. If you can do that, call me. If you actually are one of those people I want to reach, call us and I promise you that someone here will not sell to you badly.

The 2010 AIIM conference was a few weeks ago, and Atalasoft exhibited as usual. This is what I noticed:

  1. SharePoint: Last year, SharePoint was important at AIIM, this year it was dominant. There was some kind of SharePoint tie-in at nearly every booth. We were no exception, since we sell a SharePoint document management system. Not having a SharePoint story really made you stand out at AIIM (and not in a good way).
  2. Mobile: This shouldn’t be a surprise either. With the release of the iPad, it should now be obvious to everyone that document management is going mobile in a big way. We showed a prototype VizitMobile, a mobile Safari web application built with the help of DotImage, and gave away an iPad. I saw other iPad give-aways, and a few document management AppStore apps. This year mobile was nice-to-have -- next year, I expect it will be like this year’s SharePoint – no mobile story will mean no relevance.
  3. Where are the toolkit vendors?: Since this is my space, I really noticed that many toolkit vendors that I see at AIIM every year were not there. In imaging, all of the expected players were there, but ECM is more than just imaging. There are toolkits in all of the categories of ECM. Also, we go to AIIM partially because our customers go to AIIM – and they use other toolkits. There’s a lot of room to be the only ECM toolkit at AIIM in a lot of categories except imaging (which is crowded).
  4. CMIS, does anyone care? What if Microsoft, Oracle, IBM, Alfresco, and OpenText release an interoperability standard and no one else supports it? The de-facto interoperability standard I see is SharePoint object model and web-parts. That isn’t good news if your name isn’t Microsoft.  I specifically asked one of these vendors about connecting via CMIS – I think I was the first one ever.

In any case, it was a great show for us – we saw a lot of customers and partners, and it’s always a great place to get in-person reactions to what we’re doing. Looking forward to next year.

On Wednesday, I’ll be leading a session at The Architect Factory event in Cambridge, MA. My topic is Persuading Product/Project Managers and is in the Architecture Leadership track.

I’ll be covering:

  • What is a Product Manager?
  • How Product Managers think
  • How technical should Product Managers be?
  • What motivates Product Managers
  • How Architects and Product Managers work together
  • How to describe technical concepts to non-technical managers
  • How to communicate estimates
  • How to communicate design choices
  • How to describe implementation details like unit testing, refactoring, and infrastructure

More than a third of the time will be devoted to discussion.

Windows IT Pro published a checklist for SharePoint Document Management. It covers some of the things you need to think about in addition to just adopting SharePoint (storage, interoperability, backup, security, etc)

Those things are important, but instead of concentrating on the infrastructure mechanics of document management, it’s better to talk about the purpose. If you are sitting in front of your computer looking at SharePoint and thinking about folders, Documentum integration, your SAN, and backup procedures, then something has gone completely wrong.

The reason to use any tool is to get stuff done – pay invoices, process claims, answer inquiries. The more you can get SharePoint and whatever you add to it to put your work in front of you and help you do it, the more you will get out of it.

Here’s my checklist of what to look for in Document Management that will help you get work done.

  1. Are all the things you need to process a document organized and easy to get to while viewing it (Annotations, meta-data, document editing)?
  2. Are related documents readily accessible?
  3. Can you compare two documents easily? For example, the purchase order and the related invoice or two versions of your newsletter.
  4. Is search integrated so that I don’t need to leave my management window to bring up another document?
  5. Can I correct a badly scanned page with an ad-hoc page rescan right from my viewer?

Of course everything needs to be backed up, versioned correctly, integrated, etc. But if that’s all you get, then you won’t get the full benefit. In the end, the ROI will be driven by the business getting it’s work done, so don’t stop at just the infrastructure requirements.

More Posts Next page »