Previous month:
October 2010
Next month:
December 2010

Posts from November 2010

Hate all the whitespace in Skype 5.0 Beta for Mac? Re-style it!

Want to get rid of all the whitespace in the new Skype for Mac UI? With the release yesterday of Skype 5.0 Beta for Mac, many folks I know predictably trashed the new user interface and raised many issues with it. One of the annoyances I had was the sheer amount of whitespace that surrounded the chat messages. I have a LOT of chats open... and many are VERY busy, so all the whitespace resulted in a lot of extra space. It turns out that there's a relatively simple fix:
RE-STYLE THE CHAT!

Using some very simple instructions after someone nicely created a new style we could use, here's my user experience:

Skype-12.jpg Skype-12.jpg

MUCH nicer for large chats!

As outlined in this post, "Styling Skype Beta for Mac", it turns out that chats can be styled through the typical combination of CSS, HTML and JavaScript. As Maykel Loomans writes in that post, you can right-click Skype.app in your Applications folder, choose "Show Package Contents" and then go into Contents > Resources > ChatStyles. There is only one style there, "Panamericana", which is a package you can then copy, open up and restyle:

ChatStyles.jpg

I chose not to try Maykel's "Panamargincana" style purely because someone in the comments indicated it currently breaks emoticons (and I use them) [SEE THE UPDATE BELOW], but I used instead Andy Grauland's "Panamerica Mini" style. As he writes, installing the new chat style is just a simple process of extracting the contents of the chat style from a zip file, installing them into "~/Library/Application Support/Skype/ChatStyles" (creating the folder if you need to), restarting Skype and then choosing your chat style from the Preferences:

Messaging.jpg

Given the simplicity of this, I expect we'll see all sorts of people playing around with the CSS to come up with other new styles for Skype chats. Maybe we get a style that's even more compact! :-)

Kudos to Skype for making it easy to modify the Skype client in this way.

P.S. Unfortunately, per contacts at Skype this is only available with Skype 5.0 Beta for the Mac - and not with Skype 5.0 for Windows.


UPDATE #1 - Maykel Loomans subsequently came out with a "Simple Skype" chat style that I am now using and liking very much. Maykel seems to be iterating very fast on his design, so you may want to follow him on Twitter to keep up.

Phil Wolf over at Skype Journal wrote about the ability to style Skype chats and some of the larger ramifications. He also had some suggestions to improve the process of developing chat styles.

One of those was to help with prototyping - and Maykel Loomans has helpfully provided a way to do just that with a bit of jQuery goodness.


If you found this post interesting or useful, please consider either:



Skype 5.0 Beta for Mac OS X: A First Look at Group Video

Continuing on from Part 1 where I looked at the new user interface in the Skype 5.0 Beta for MacOS X including using chats and making audio calls, let's look at video and the new Group Video.

UPDATE: I now have a video review available on YouTube showing the Group Video feature in action.

Video - and Group Video

Making a video call is very much the same experience as an audio call - make the call with the video button next to your contact or press the video button in a audio call. You get your standard small "preview" screen and you see the person you are calling. You can pull up the video window so that you can see the chat. If you don't move the mouse over the window for a bit, the controls fade away so that you see the entire screen of the other persons video. All in all pretty nicely done:

Skype-18.jpg

(And yes, I deliberately covered some of the names of the chats. :-) ) For those curious, the person I'm calling is Chaim Haas who works with PR for Skype.

Adding someone else in launches the Group Video feature where you first have to accept that you are joining a "trial":

Group video and sharing.jpg

No clue what will happen in 28 days when the trial expires... but whatever...

The result is a great 3-way conversation via video - and yes, Chaim had two separate laptops running 5.0 (one Windows, one Mac) so we brought in two different accounts he had:

Skype-11.jpg

Just to show that it could work with more people, we brought in a colleague of Chaim's:

Skype-14.jpg

I found it interesting to note that Skype 5.0 identifies the person currently speaking with green on their name (although with video I would think it's a bit easier to see who is talking).

Note, too, that at the bottom there is another person, Adam Hirsch, below the line. Chaim mistakenly added him to the call at the same time he added his colleague, but what's interesting is that because I was the organizer, the new person was not automatically added to the call. Instead, I had to approve them joining the call (as I did with Chaim's colleague). You can also do some funky things like minimize some of the video sessions so that you see one larger than the others:

Skype-15.jpg

The other video sessions are continuing to stream and you can see by the green that Aziza was the one speaking at the precise time I snapped this video.

My screenshots have shown the group video taking up the whole screen, but you can also expose the sidebar and see all your chats/conversations:

Skype-16.jpg

Here is one major difference with the "one window" paradigm. You can switch over to any of your chats to participate in the chat - but you can't see the video any longer. You are still sending video, of course, you can't see it until you switch back to the call window. Previously with the multiple windows you could resize the video to fit in one part of your screen and simultaneously have your chats open in a separate window.

Screen Sharing

Like the previous 2.8 client, Skype 5.0 Beta for MacOS X supports screen sharing, although with one change - you can only share your full screen and not a region of the screen:

System.jpg

I don't know how many people used the ability to share a selection of the screen, but I know that from time to time I did. Hopefully that might be something they'll bring back in a later beta or release.

Flipped Video

One funky thing I did notice in my test with Chaim was that my local video - the image of my myself that I see, turns out to be flipped horizontally. (And this turns out to be the case for the Skype 5.0 for Windows client as well.) I probably wouldn't have noticed... except that when Chaim shared his screen showing my video on Skype I noticed that my direction of viewing was reversed. A subsequent holding up of a book rather directly verified that:

Skype-23.jpg

Not a big deal... the recipient of the call is seeing the correct viewing angle. It is only you who see the flipped video.

Wrapping Up

Combined with the first part of this review, that pretty much does it for a tour of the Skype 5.0 Beta for Mac. After two days of usage I'm still getting used to the new UI. I've been using Skype for 5 or 6 years now and using it almost entirely on the Mac for the past 3 years... so I've gotten very used to my certain way of working with Skype... and this new UI fundamentally changes so much of that. I realize, though, that I probably push some of the features and use it more heavily than many people do. I'll try to summarize my overall opinion in another post.

Meanwhile, what do you all think? If you are a Mac user, are you going to give the Skype 5.0 Beta a try? If you have done so already, what do you think of it so far?


If you found this post interesting or useful, please consider either:



Skype 5.0 Beta for Mac OS X: A First Look with Screenshots

Skype logoCould it really be true? Was Skype actually delivering a MacOS X version that was close to parity with the Skype for Windows version? After all the complaining we Mac users have done?

Yes, indeed, for better or worse, today is the day... Skype is releasing Skype 5.0 Beta for MacOS X!

First Thoughts

I say "for better or worse" because the initial reaction that pretty much every Mac user is going to have is:

OMG, Skype COMPLETELY changed the user interface!

That they did... and some people will love it... and some will absolutely hate it. The good news for those of us who have ranted about Skype's fragmented product strategy is that this release brings the UI much closer to the Skype for Windows UI so there is a more consistent experience across the platforms. (Although Jim Courtney points out that the UI is NOT the same as the Windows UI.) The bad news for many "power users" is that this release brings the UI much closer to the Skype for Windows UI! :-)

Counting myself among those "power users" (and working at Voxeo where we are huge users of both Skype and Macs), I can say that new UI will definitely take some getting used to but there are some intriguing aspects to the new design... and we also do now get group video calling on MacOS X. Let's take a look and walk through the new design...

UPDATE: I now have a video review available on YouTube showing the new user interface and the Group Video feature in action.

Getting Started

With a new release, Skype naturally had to freshen up some of the graphics... so after you do the normal MacOS X drag-and-drop installation you have a sign-in screen with clouds, a rainbow and a spinning circle. It seems to need to update some files on your system first:

WARNING: It's not clear yet whether you can return to Skype 2.8.x after installing the 5.0 beta, so just be aware you may be making a one-way trip!

Skype-1.jpg

Once you are signed in you get a handy "welcome" screen that walks you through what's new and provides a way to test out your audio setting and learn about how to use Skype:

Welcome.jpg

And then... (drum roll please)... THE NEW USER INTERFACE:

Skype-4.jpg

Gone is the "drawer" paradigm we've been used to... everything is now in one big window. In fact, there seems to be no way I could find to open up a second window! It's all in the one space.

The view here (above) is showing my contacts in the main panel. In the left sidebar, I see "Everyone," which is all my contacts, then "Address Book" which is (yea!) my regular MacOS X Address Book, and then my "Groups" of Skype contacts, which I had quite frankly completely forgotten about in the old UI.

Then you get into the chats... er... no, now they are "Conversations"! The "Chat" menu is now the "Conversations" menu and pretty much every previous place that said "Chat" now says "Conversation". More on that in a minute.

Working With Contacts

When you move your mouse over a contact, you immediately get icons for the ways you can go and contact the person:

Skype-5.jpg

The down arrow next to the phone nicely lets you call people at their different phone numbers outside of Skype:

Skype-6.jpg

Like the older version, you can view the profile of a user (although the only way I found to do it was to Control+click their name in the contact list) - and it now pops up in the one window view:

Skype.jpg

And for those of you who are fans of the "cover flow" style of scrolling popping up in most Apple applications, there is a button in the upper right of a contact view that gets you this same experience. I'm not sure how useful it really is, but as eye candy it's fun to have:

Skype-2.jpg

The "Search" box up at the top right is also very useful as it will pull up a list of contact and chats matching the string you enter in there.

Having Conversations

The chat/conversation is, well, a chat interface. Not terribly different from the previous version, although there is more white space above and below messages. Someone probably thought this makes chats easier for newbies - and it perhaps does. But for many of the chats I'm in with many messages, I've found I'm scrolling more than before.

There are, though, some major changes to the management of chats. Here's the new window:

Skype-3.jpg

The list of people in the chat is no longer off in a side column ("drawer") where you could click an arrow and see who all is in a chat. It's now that list of names on top of the chat window - and you have to click the "and XX more" button to see the list of names... in a small scroll area. I liked the previous way of having all the names in a single column and just being able to scan down them. Now you have to scan back and forth across a list of names to see if someone is in there.

The left column has the biggest change. Chats now appear in a chronological list under "RECENT". You can see that I have "Today", then "Yesterday", then it will go on down to "This Week" and "This Month". (This screenshot was taken shortly after midnight, which explains why there is only one chat in "Today".)

THERE IS NO WAY TO CHANGE THIS SORT ORDER!

Skype 2.8 power users will recall that you could sort chats base on 1) date; 2) title; 3) priority; or 4) manually. No longer - you can only sort by date.

Now... there is a way to get a degree of manual sorting. As you can see in the screenshot above there are now "Favorites". When you flag a chat as a Favorite, it moves up into this fixed list and will stay there. This works okay... but in my case there are a lot of chats that I want to keep around and if I were to add them all to my Favorites list it would be so long that the date-sorted chats wouldn't appear in my window. Thankfully, Skype 5.0 preserves the Bookmark functionality of the previous version so you can "bookmark" chats and get back to them from the "Conversations" menu.

The seriously bad part about the "one window" paradigm is that:

THERE IS NO WAY TO POP CHATS OUT INTO SEPARATE WINDOWS!

All chats have to be in the same window! I dearly hope Skype will change this during the beta process and give us the ability to have chats out in separate windows... but for now, they are stuck in one windo.

Making a Call

The biggest change to making an actual call is that it is within the single window instead of popping up the separate window as it did previously:

Skype-7.jpg

The standard audio controls are in the upper right (although I didn't find a way to quickly change the audio device settings, as there was in the previous version). The person's avatar image would show in the middle of the screen if I were calling someone with one.

The most disconcerting thing to me was - where is the chat window with the person? I've become accustomed now to a multi-modal conversation where we'll be talking or using video and simultaneously exchanging links or other text in the text chat. You can switch in the left sidebar to another chat... but to chat with the person you are calling it turns out to be very trivial - just go to the bottom middle of the video window and drag the video window up! You get something like this:

Skype-8.jpg

Which turns out to be a pretty decent way of working with chat and a call. You can easily add in other parties to make a conference call... the chat becomes a multiperson-chat. It all works very well.

Another cool feature is that if you switch from Skype to another application while you are in a call, you get this slick "Call Monitor" window at the top of your screen that stays on top of all other windows:

Current Calls.jpg

Quite nice in that you don't have the entire call window staying on top as you did with Skype 2.8.

Given the length of this post, let me break here and dive into video and group video over in Part 2, "Skype 5.0 Beta for Mac OS X: A First Look at Group Video".


If you found this post interesting or useful, please consider either:



Update on Phono, a jQuery plugin to simply add voice/chat to your web app: More tutorials, videos, available...

phono-shadow.jpgHave you played yet with Phono, the new way to add a phone or chat client to your web app, directly from within your web browser? Two weeks ago, when Phono was announced at the jQuery conference in Boston, I wrote about how Phono lets you "rewire the real-time web". In the time since, the Voxeo Labs team and I have been busy cranking out tutorials, videos and blog posts showing how people can build cool apps with Phono. A page is now up summarizing many of the new resources at:

http://blogs.voxeo.com/news/phono/

If you have no idea what Phono is all about, that page also provides a great way to learn more. There are sample applications like "Facebook Telephone" and "Twelephone" for Twitter. There's a "Kitchen Sink" example that you can use to get started right away... the Phono Blog, too, is filled with ideas and new ways to add voice or IM to your website or web application, including a WordPress plugin that lets you add a "Call" button to your WordPress blog

It's all cool stuff, to me... and interesting because it makes it even easier to connect people to your company or organization from your website. My next area to explore is using Phono as an embedded chat client... we've had some blog posts up now about how to do that. It's time for me to check that out!


If you found this post interesting or useful, please consider either:



Asterisk SCF: Scalability, Extensibility, Performance

asteriskscf.jpgThe big news coming out of Astricon last week in DC was the "Asterisk Scalable Communications Framework", a.k.a. "Asterisk SCF". The main goals of the project are to bring to the Asterisk platform:

  • Scalability (and high availability)
  • Extensibility
  • Performance

As a long-time fan of Asterisk (and user/administrator at various points of time), I can agree that all of these are areas where the base Asterisk IP-PBX can use some help.

Asterisk SCF is NOT a replacement for Asterisk. Instead it is essentially a framework for extending Asterisk and adding new functionality. As the executive summary outlines:

Asterisk SCF is designed as a distributed system of components that can be deployed in clusters on a single system or on many systems, transparently. Implementing Asterisk SCF as a cluster of small components allows it to naturally take advantage of the ever-wider multi-core CPUs being produced today as well as the movement to off-site or cloud-based computing. In addition, all operational data elements required by Asterisk SCF’s components are themselves managed by their own Asterisk SCF components, allowing for active/passive failover models with no disruption of service. The design also ensures active/active failover and load-sharing models can be supported. These design elements allow capacity to be added to an operating Asterisk SCF cluster by simply enabling additional component instances.

The "distributed system" part is the key. I wasn't at AstriCon, but from the Twitter stream as the event was unfolding it sounds like the Digium folks had a good bit of fun with the keynote announcement... including where they simulated three data centers and then pulled the power from one to show that calls stayed up. This kind of capability is what Asterisk needs to grow into new areas of deployment.

Asterisk SCF is still in development... only an "alpha" is available now and a beta will be out sometime in 2011. The Digium folks have put together a pretty comprehensive wiki about Asterisk SCF at:

http://wiki.asterisk.org

I found the Introduction and FAQ both quite useful to read.

As a huge believer in the power of distributed systems, I wish the folks at Digium and within the Asterisk community all the best as they undertake this Asterisk SCF effort. I (and many others, I'm sure) will be watching and looking forward to seeing what evolves out of the effort. I'm sure there will be many more posts to be written...

P.S. FYI, Dave Michels published a good post over at the UC Strategies blog: "The Next Big Thing: Asterisk SCF


If you found this post interesting or useful, please consider either:



Want to speak locally about Tropo.com voice/SMS/IM/Twitter mashups? Here's some free gear..

tropogear.jpgIf you have become a fan of Tropo.com for creating applications that use voice, SMS, IM and Twitter and want to speak about Tropo to a local user group, meetup, BarCamp, WordCamp or other event, the Voxeo Labs team has put together a pretty cool "meetup kit" that you can request (for free) for your next event. It's got some T-shirts, stickers and even some USB drives.

The Tropo blog post has info about how to request a kit.


If you found this post interesting or useful, please consider either:



A Brief Primer on the Tech Behind Skype, P2PSIP and P2P Networks

Relationships between "top 50" UK PR twitterers

What is an overlay network? What's a DHT? How does a node compare to a supernode? What differentiates a "pure" peer-to-peer (P2P) system from a "hybrid" system?

UPDATE: Unfortunately, this post is no longer accurate with regard to Skype's infrastructure. After the massive Skype outage in December 2010, it was expected that Skype was exploring ways to make their system more stable and resilient. In early 2012, Skype (at that point now owned by Microsoft) was reported to have replaced much of the P2P supernode infrastructure with supernodes hosted in Microsoft data centers. Since that time we've understood that additional changes have been made for resiliency's sake. Given all that, it's hard to know exactly how Skype's infrastructure exists today. This article below does, though, provide some background into the basics of peer-to-peer (P2P) infrastructure.

I have a series of posts planned over the next few weeks related primarily to Skype and some of the changes brought about in Skype 5.0 for Windows that are interesting from a technology point-of-view - but in order to write those posts, I need to build a bit of a foundation of some of the issues and terminology used in peer-to-peer (p2p) networks.

If you are not familiar with peer-to-peer (p2p) networks and the terminology associated with them, my goal is to give you a basic background.  If you are familiar with P2P technology, well, you can probably skip this and wait for the next post :-)

Peer-to-peer vs. Client/Server Networks

For starters, let's differentiate between "peer-to-peer networks" (p2p) and more traditional networks. If you think about running, say, AOL Instant Messenger (AIM), on your computer, you install the AIM client software on your computer. When you launch the software, it connects you to the AIM servers running somewhere out on the Internet. When you send a message to another AIM user, that message goes from your client up to the AIM servers and then from there down to the recipient's client.

This is "client/server" networking and is how the majority of the Internet-based services we use are structured. We operate web servers, mail servers, file servers, etc., etc. and have local clients installed on our computers that connect to those servers. Even in many of the "cloud" services out there, we are still using a client (typically a web browser) to access services running on some big set of servers out on the Internet. (And the services may in fact be client/server-based, but with all of that being hidden in internal infrastructure.)

Peer-to-peer networks are completely different in that:

There are NO servers.

(Well... at least in "pure" P2P networks. We'll talk about hybrids later.)

Instead, every "node" on the network is a "peer" - it is both a client and a server. It acts as a client accessing resources from other peers - and acts as a server providing resources to other peers. The computers that are running the p2p software are all participating in a "p2p network" connecting the computers (nodes) together.

Overlay Network

While I've heard people lately talking about that p2p network as a "p2p cloud", the technical term is to refer to it as an "overlay network" (or "network overlay" or just "overlay"). The idea is pretty straightforward... you are running software on your computer that "joins" a network that exists on top of the actual Internet connections. Here's a picture of how it might look:

overlaynetwork.jpg

The "Internet" is in fact a collection of top level Internet Service Providers ("ISPs") who run the "backbone" of the Internet and connect out to 2nd tier ISPs who connect to 3rd tier ISPs who connect to... etc., etc. until you actually get down to the network drop or wireless service you use to get access for you PC (using "PC" generically here for a computer... could be Windows, Mac, Linux, whatever). Everything is all interconnected via IP addresses and running the TCP/IP protocol suite at the networking layer.

The "overlay network" is created on top of that IP network by PCs running the P2P software. They connect to each other and communicate with each other regardless of what the underlying network infrastructure actually looks like.

Now, I've shown it in the drawing as a nice somewhat circular ring because it was convenient to do so. In reality the picture would undoubtedly be a whole lot messier - but logically it would still function a lot like a ring in most P2P networks. (And note that some people do talk about an overlay networking being a "p2p ring".)

Distributed Hash Tables (DHTs)

A question, of course, is ... how do those peers know where each other are? If the overlay network is on top of the IP network... still, ultimately the data connections have to happen over IP - how does a peer know where to send packets?

Now this topic gets into a whole area of research that network geeks like me may find absolutely fascinating... but everyone else may find their eyes glazing over.

Suffice it to say that there are a whole number of different algorithms for building p2p networks, and most today use some form of a distributed hash table (DHT). The idea is that you have some piece of information, like my user name, for which you want to look up other information such as how to reach me. Your P2P software performs a "hash" on that info (called the "key") and winds up at an address for that information inside the overlay network. It then queries the overlay network and the node responsible for that "address" responds back with the requested information (the "value").

Think of a DHT as a giant distributed database of "key / value pairs". (And in fact some large distributed database systems use DHTs.)

There is a LOT more I could get into... but that would quickly take this out of "A Basic Primer". Those wanting more info should check out the DHT entries on Wikipedia and the P2P Wiki, both of which are good. I mention DHTs here primarily because any time you go looking for P2P info on the net, you pretty soon wind up reading about DHTs.

Service/Resource Discovery

If every peer can act as a server, how do other peers know what services a given peer can offer? In our real-time communication world, one peer might have a PSTN gateway connected to it. Or maybe an automated attendant... or a voicemail server. Or maybe it's running on a mobile client with reduced capabilities.

One challenge in a P2P network is to learn what resources each node has. This is typically referred to as "resource discovery" and again, different P2P networks have different methods of solving this issue.

Directory

Related to resource discovery is the whole "directory" issue - how do you find other users? If you think of Skype - or any P2P communication system - if I want to call or IM someone, how do I know where they are in the P2P network?

Enrollment / Authorization / Authentication

There are two security-related issues that come up (well, there are many but two key ones). One is - how does a new node join the p2p network? And the second is - how does an existing node that dropped out of the p2p network (perhaps going offline) get authorized to re-join the network?

Some P2P systems refer to this first issue as one of "enrollment." How does a node "enroll" in the p2p overlay network?

The second question is one of authorization / authentication of the node that it is allowed to join the p2p network.

Again, there are multiple ways to solve this issue including, at least in Skype's case, of adding in some servers to the mix to perform these functions.

Churn

A fundamental challenge of any P2P network is how to deal with the "churn" of nodes dropping in and out of the overlay network. For instance, as computers go offline and then come back online, they leave the overlay network and then rejoin. Different overlay network topologies have different strategies for coping with churn and minimizing its impact.

Nodes vs "Supernodes"

A second fundamental challenge for P2P networks is our dear old friend "Network Address Translation" (NAT) and all the related firewall fun. Given that a node behind a firewall cannot directly communicate with a node behind another firewall, how do they get connected?

The idea is that you have another network node that is not behind a firewall that can act as a relay between the two nodes behind firewalls. In Skype's terminology, these relay nodes are referred to as "supernodes".

simplesupernode.jpg

UPDATE: Shortly after I published this post, several friends suggested that I was making this perhaps too basic with regard to Skype. In fact, several deep and long posts could easily be written about Skype's supernode architecture as it is quite fascinating.

The point I was trying to make was that for nodes behind NAT/firewalls to communicate with other nodes behind NAT/firewalls, there needs to be some node outside of firewalls - on the public Internet - that can broker the communication between the endpoints.

In the case of Skype, we typically refer generically to those public nodes as "supernodes". In fact, the nodes known as "supernodes" perform the somewhat limited functions of connecting nodes together, providing a distributed database and choosing appropriate nodes to act as "relay nodes" when necessary.

These "relay nodes" are, in turn, the ones that perform the actual relaying of calls, messages, packets when direct connection is not possible. It is possible that these relay nodes could be located behind a NAT/firewall as the supernodes are connected to them and using them essentially to offload processing. Skype provides more info (including how to specify that your systems not be used as supernodes) in the IT Administrator's Guide I link to in the resources below.

In the IETF world of SIP, this external connection function is performed by either STUN or TURN servers (and that, too, could take up several blog posts).

"Pure" vs Hybrid P2P Networks

In an ideal world, a "pure" P2P network has no servers whatsoever. Every node on the network is a peer and functions as both a client and a server.

Sometimes, though, reality intrudes. Sometimes servers may need to be introduced into the mix in order to provide specific services for performance, security or other reasons. For instance, in Skype's case the general understanding is that servers are used for enrollment (to have a Skype client join the P2P overlay network for the first time), for some degree of authentication and also for connections out to the PSTN.

Networks that introduce some level of servers are typically called "hybrid" p2p networks.

That should be enough...

... for me to get started with my articles. I hope this was helpful - and if you have questions about items here or additional points you think I should mention, please feel free to leave them as comments.


Resources

Lots of good info out there about P2P networks in general... here are some you may find useful:

If you have other suggestions, please feel free to send them along.


Flickr credit: porternovelli - and yes, this image really has nothing to do with P2P networks - it's a graph of top PR Twitterers - but it could be for a P2P network... and in a way all of those Twitterers are an overlay network ;-)


If you found this post interesting or useful, please consider either: