Friday, April 11, 2008

Which Languages Handle Packages and Libraries Best?

In the post Why Do We Use C++, I made the following statement.

Another, often forgotten strength of C++ and of many traditional modular and modular-turned-OO languages is linking, or more generally, we might say 'package management'. C++ innately offers build-time linking and runtime 'linking' is also usually available (i.e., DLLs). This allows graceful scaling. Tool support for this in C++ is strong and reasonably robust because C++ is so frequently used to build enormous projects. It's possible to build massive projects in pieces in ways that are awkward or impossible in many functional or logic languages.

Simon wrote,

C++ good at linking and package management??? That's the most ridiculous thing I've heard all week. This is one of the weakest aspects of C++. Where to start:
* no standard ABI for compiled code. ("Don't mix compilers")
* no standard for managing namespaces and packages like in Java.
* Very hard to evolve a class and keep binary compatibility. Lots of obscure compiler depend rules need to be followed to do this. ("Change a .h file, rebuild everything that uses it")
* dynamically loading code modules has to be done manually. Java, Python and other languages load classes on demand.
* C++ code can call C code, but any other kind of mixed language development is a nightmare.
* easy to break features like dynamic_cast when loading share libraries. (My fun debugging adventure this last week...)

I think Simon makes some excellent points here. So I'd like to ask the community.

What is the best language (and what are the best language features) for linking/loading and package and library management?

Thursday, April 10, 2008

Social Networks Could Still Change The World

Social networks are underwhelming. Join one and add your friends. Perhaps they are friends you haven't seen in years. You'll get excited, exchange a message or two and then forget about it.

One social networking site is better than many.

I have circles of friends in MySpace (a circle of 0), Facebook, LinkedIn, Classmates.com and Reunion.com. The categorization is artificial. I'm friends with people I know who also happen to be members of the respective site. Take Classmates.com for example. My main group is anyone who attended my school the years I did. Thinking honestly back to high school, there are people I liked, people I don't remember and a dozen levels of nuance in between.

Classmates.com and Reunion.com are dead. They are made utterly redundant by Facebook. LinkedIn is a better alternative to exchanging business cards but could easily be swallowed up by a site with a more flexible, natural and/or automatic way of specifying circles of friends and/or privacy policies. MySpace, on the other hand, just sucks.

Until social networks get wise to the psychology of social interaction, they won't be really useful.

I feel uncomfortable mixing my different circles of friends at parties without making sure that they can make some sort of connection. Categorizing relationships is something that we do effortlessly and unconsciously. Determining what to share with who, when and where is a complex bit of emotional processing that either comes naturally or not at all. For a social network to be really useful, it's going to have figure this out without us having to explicitly group all our friends. After all, these groups - especially the heavily political circles (I cringe for the oceans of middle and high school students on these sites) - are transient with shifting boundaries. You may say that asking a machine to understand this is asking too much, but I disagree. Given enough information - for example the phone logs in your mobile phone - and the behaviors of everyone else who has ever used a social networking site, existing and proven statistical algorithms such as Amazon's book recommendation could automate the largest part of this (Note that statistical algorithm these days is a politically correct euphemism for AI).

I don't want a site. I want a social widget that I can drop into and enrich any technology I want.

The idea of going to an actual website to share anything with friends is absurd. What's more absurd is having to go to five of them. I need a social network component that I can drop into Madden, my phone, my emailer, my IM application, my videogames, my browser, my newsreader, my MMOGs, my iPod, my television, my casual games.

Would this be web component like the Google search bar at the top of every site? Under the hood, maybe I'd expect a sort of service or protocol like LDAP (social://facebook.com?paul_senzee) or a central social network database with intelligence. Of course, this implies that..

Whether one or multiple social networking companies prevail, there must be a standard data interchange format for social network information.

Companies that maintain databases of files of this format will learn a lot about who we are and..

We are known by the company we keep.

The individual as a social being implies that certain types of personal information are best and unavoidably contained in a social network. Then why not keep all of it there? Experience has shown that people are willing to forgo certain privacies for much greater benefit and it's easier to hold one company accountable for privacy violations than many. In this way, social networks could allow advertisers and vendors to present me with exactly what I want without having to give my information to 1,000,001 different parties or revealing my identity.

I want a web I'm interested in, and that my friends are interested in. Social networks can be great active filters.

In 1995, the idea of posting a website and speaking to an eagerly listening world was exhilarating. Now it's noise. I want things I'm interested in to come find me, because there's no way I can sort through the enormous mess of the internet efficiently. The social network knows the interests I share with each friend.

I'll find a story or site that interests me and tag it with a button in the browser. That percolates to my friends with similiar interests, not to the world at large, and not to my friends that are uninterested in the topic. If I'm playing a 360 game and I get stuck at a spot it would be cool if the game would show me how my friend passed that spot.

We have one global web. How about a billion personal webs filled with information actually relevant and interesting to oneself and one's social circles. A much, much more useful internet. Of course, I'll always want to be able to opt back into anonymity.

We need to publish information with the sensitive parts [deleted]. We want to publish a highly targeted message.

Imagine that we could share information with subtle variation based on the group of people that we're sharing it. If advertisers can do this to us all day long, why can't we all?

A new blog post..

After [show for="EA Employees" alt="our new game"]The Beautiful Princess Tea Party[/show] comes out[show for="EA Employees"] on 09/27/2011[/show], I'm going to take a long vacation in the Keys[show for="Senzee Family"] at the Gardens Hotel[/show].

For EA Employees it says,

After The Beautiful Princess Tea Party comes out on 09/27/2011, I'm going to take a long vacation in the Keys.

For my family it says,

After our new game comes out, I'm going to take a long vacation in the Keys at the Gardens Hotel.

See, The Beautiful Princess Tea Party is going to be a big surprise for my girls. Finally, for everyone else it says,

After our new game comes out, I'm going to take a long vacation in the Keys.

In this case, blogger.com would query the social network to process this page before it's served up. As you can see, to be really, really effective the social network must be an organized, standardized service at the internet's foundation, instead of a handful of ad-hoc websites thrown up to cash in on the Web 2.0 rush.

That's the web I see coming.

Thursday, April 03, 2008

Philadelphia 1961

(Philadelphia 1961, Lee Friedlander)

I saw this at the San Francisco Museum of Modern Art, and it struck a chord. This, ladies and gentleman, was the future.