I want to give a quick introduction to something I've been working on lately, the TweetZenn client. This is a Silverlight application I've been building to provide access to twitter (and eventually many other social networks). I'm intending it to be a tool that allows you to not just construct tweets, but also to use and browse the various social networks to find information. I've also built it to hone some Silverlight skills ;-)
Far as I know, this will be the first production twitter client in Silverlight. I really think this offers many advantages over other clients in the types of features that it will be capable of providing. The first release will likely just focus on Twitter, but Facebook is in the works, as well as several other social networks. Overall I look at this not as just a Twitter client, but as an overall tool for managing collaboration within multiple social networks.
So, where is this for your access? Well, it's not quite available yet as I'm still working out a couple of kinks in the base implementation, but I'll throw a couple of screen shots out here to whet appetites...
The login screen:

If you look closely, you'll notice that this is Silverlight 2.0, in Flock, on Mac OSX, and it is rock solid. If you know me, I build and run on Mac exclusively (albeit in a Windows 7 VM on OSX).
From this screen you will be able to login using your twitter credentials (and eventually that of other networks). There is a little hint in the picture above of some of the functionality. There are the things that you would expect from a twitter client, such as a tweet stream that updates when new tweets are found, favorites support, searching, making your own tweets, reviewing your created tweets, ... I've gone with a panel / stack metaphor which seems to be the rage, but I expect to provide a bunch more "views" as time goes on.
Here are a few other snapshots of various functions, although I warn that these may change before this goes live:
The following shows the your tweets and recent tweets panel, as well as a little of the browser:

The panels can be moved around, and we also support multiple pages of panels if you would like that.
Once of the features that we have is the ability to form groups. This is quite easy using either a hot link in the tweet, or using the group panel. For example, here I assigned Jeremy Miller to the .NET group, and you can also see he is instantly added to the 'members' of .NET in the group panel.

One of the things TweetZenn has that others don't is the ability to browse the social network to review peoples tweets and potentially follow them.
Here I'm showing the use of the .NET group to show only the people I follow in that group, and to be able to on the spot review their tweets just by clicking on their picture:
If you want to see who Jeremy is following, you can click on a button in a popup (when hovering on his head), and you will be shown that information:

You can view the tweets of any of Jeremy's friends, and if you want to follow them you can just follow them by clicking the appropriate button in the popup. Notice that Jeremy now shows up at the top. It keeps track over where you've been so you can go back there at any time.
This has been just a brief introduction, and as usual I'm writing this while trying to get on a plane (seems I blog the most from airports). I'll explain more over the upcoming days, including explanations of how this works as well as showing some of the code as I'm leveraging all kinds of neat stuff like web services, LINQ to SQL, isolated storage on the client, caching on both the client and server sides, full separation of view from model with XAML, dynamic changing of visual representation through XAML templates, asyncronous everything, and much more....
Stay tuned!
f2667eac-c22e-42af-a2f4-72773cb81e5b|0|.0
I'm a huge user of SlingPlayer. I travel a lot on business, and I'm always using my sling player while on the road. I have a dual tuner DirecTivo in my Malvern apartment that records all my shows, and I have the sling player configured to control the tivo when I'm on the road.
Prior to my iphone, I had a Samsung Blackjack and the SlingPlayer mobile on that phone, and that was great for times when I was away from the laptop and wanted to watch some TV. I was hoping that SlingMedia would get a version out for the iPhone, but AT&T being the jerks they are fought them for a long time.
A couple of weeks ago, the player did finally come out, for $29.99 (which I gladly paid), but of course AT&T are still jerk-offs and only let it use WiFi on the iPhone (which works great). However, I found a way to integrate it with my MacBook and Sprint EVDO card to be able to access the sling player across the sprint 3G. You may ask why do this when I can just watch it on the laptop? Good question I guess. First, I just want to see if it is possible. Second, I can leave the laptop on a desk or another room and still watch with the phone, which is more convenient in many cases.
Here are the instructions...
First, connect to the Sprint network (or your 3g provider on your laptop):

Then configure your airport on your mac to create its own wireless network:
Also, in networks settings, make sure to enable internet sharing of your sprint connection to your airport. I did the next step first and the sling player didn't work as it appeared that it did not give gateway information to the iPhone, so this seems important to do first:

One the iPhone, go to settings / wifi and connect it to your network:

You'll probably see settings such as the following when that is complete:

And I noticed that my airport icon looked like the following:

Now start your SlingPlayer on the iPhone and enjoy:

1519d7d1-eef0-4709-b0ba-b5b2194234ef|0|.0
Tim Heuer has instructions on how to setup a multi-targeting SL 2/3 configuration using VS.NET 2010:
Silverlight and Visual Studio 2010 Beta 1
Giving it a try right now and will report back if I have any issues with his instructions.
Update:
Well, I've tried this, and it seems to work. Specifically, what I did do was install as described, and I used 2010 to open an SL2 project which it did fine, and I could also create new SL3 projects, which could not be done with SL2 and 2008 as you had to use either SL2 or SL3, without any possibility of both.
I didn't really try to change the target, as the scenario I mention is my use case that I need this for.
However, I'm not sure I'm going to be using 2010 too much in this beta as I just was annoyed by various issues. A few times starting the debugger it locked up, and I can't seem to change the default colors in the editor to be what I want. Also, coderush / refactor pro don't work in it either.
10388d7c-fa3d-456d-a87d-a74ddc753d4c|0|.0
Posted by
mheydt on
5/22/2009 5:17 PM |
Comments (0)
I'm attending a session today at UPenn/Wharton about using social networking for business strategy. There is discussion of various items, and I thought I'd just not a few of them here:..
- I see a need for an organization that integrates business data with social network data to make decisions on the business data based upon that social network data.
- An example is that if I have a customer that does 'x', then it is likely that if there is a link in the network to another person from that person, then that person is likely to behave similarly.
- Therefore, if they are not a customer, and x behaves favorably, then it would be good to market to the friend of x. Conversely, the friend of X might be a bad customer if the same holds for 'x' (x is bad).
- Trick then is to be able to mine all of the networks, determine the relationships within the network as well as between networks, as well as to match business data with the network data.
- Directed marketing b2b, b2c through the social network.
- use the social network to dynamically drive collaboration
This leads me to believe that there is a real need for a platform that does the following:
- Integrates the separate social networks
- Defines mappings between SN's, and also metadata
- Defines mappings of corporate information to the data in the platform
- Allows for dynamic creation of social networks
- Manage data in a single place, and have it replicate to the other networks
Privacy is an issue with this type of platform. What data do you allow to be seen by the various networks?
Situation of a pharma having a facebook page. If someone posts about an adverse reaction to a drug, the pharma must follow up on it. This can be burdensome.
This leads me to also think that the platform must monitor the network comments and report appropriate comments to the appropriate people to handle them.
If there are examples of bad behavior, then that information can be used to "filter the noise".
Another idea is to use the platform to integrate to other social network aggregators.
Niche social networks are going to be the goal.
Platform is valuable as it allows you to get customers that build services on your tools, therefore collecting $$ not matter what.
Posts have relative rankings for reputation. Comments are valuable. Comments also will be graded upon their tone.
More to come...
0b339519-1ae5-44c9-90fa-4623574e44dd|0|.0
Posted by
mheydt on
5/4/2009 2:00 AM |
Comments (0)
I was flying on three flights today from Missoula back to Philadelphia and had a lot of time on my hands (thanks NWA for putting me on three flights for my reward mileage), so I decided to play around with some of the new features in iPhone 3.0. I had just got a copy the other day and got it activated, but hadn’t really played with it much beside normal usage. I had noticed a bunch of nice new features, but I finally had the time to sit down and write about them.

This is the current home page. It doesn’t look too different, but notice that there is a small magnifying glass to the right of the page dots. If you navigate to the left (drag the screen to the right), you are taken to the new search page.

Very nice, and I really like the ease of being able to get to the search function with one flick of the finger. From this page you can search the entire phone, apps, mail, notes, everything. For example, I enter ‘nwa’ and it shows the following:

It have found an e-mail with nwa in it, which happens to be my confirm for the flight I’m currently on. Pressing the item takes you right to the mail (and I assume any other type of item).
Continuing with the search functions, when you go into mail, things look normal as always:

But if you pull the mail down, you will notice a search box shows up to allow you to search that folder:

This is also the case in your contacts:

A very nice thing that has been added (finally) is landscape mode for mail. I just don’t know why this took so long:

And even better when composing an e-mail:

Cut and paste has arrived. Use the magnifyer to position the cursor around where you want to start your selection:

You’ll then see the cut and paste bar show up:

Now press select, and you see these nice little bars that you can grab and move around to allow you to select the extents of your text to copy:

While dragging those around, you’ll see another type of magnifier (and I think this is real cool) showing the text at the extent of the selection:

Here I’ve selected that whole paragraph and the copy option shows up:

Pressing ‘copy’ does just that. To show that it works, I went into notes and created a new note, and positioned the cursor, which then brought up the paste option (if you have text, you will see select / select all / paste):

Press paste and voila:

(In my best Borat voice: “Niiicccceeee!”)
As for some other features that I’ve noticed, here are a few more. First, let me show some of the item I noticed while playing podcasts. While playing a podcast, you will notice some new controls available:

Notice the envelope, 30 second rewind, and speed control options. I haven’t been able to get the envelope to do anything yet. I’m going to assume it must be to mail the link to the podcast to someone, but we’ll see.
I really like the 30 second rewind option. I cant count how many times I’m listening to a podcast or audio book and want to just go back a little to hear something again. The old way was to drag the progress bar, which for me always took me back many minutes instead of just a few seconds. This is a really nice feature.
The speed option is also really nice. This was currently available on a global level for audible books, and I almost always listened to them at 2x. This lets you select this on the current podcast, and offers 1/2x, 1z and 2x. This will really help me get through the mass of podcasts I follow weekly!
Now for some things I really like with the phone functions. Previously, your list of recent calls would show you the name of who called, but there was a problem. Suppose my wife called me, once on the landline, and another from her iPhone. I would only see her name, and now which phone she called from, so I would not know which was the most recent and therefore the most likely for me to reach her on by calling back. That is now fixed:

Also really cool, is that incoming calls not in your address book show you the city associated with the area code!

This is so nice. I can’t tell you how many times I let calls that aren’t in my contacts roll to voice mail because I want to first google the area code to see where the call was coming from before answering. So very nice!
Also added is a voice recorder app. You’ll notice the icon for it on the main page (the first image in this post). I had gotten along without this, but welcome it as it is more useful than typing in a note.
When opening that app, you see a big art-deco microphone:

Pressing the record button of course starts recording:

When done, press pause / stop, and you get into the screen for managing recordings:

You can play them back, but I also really like the share option, which right now lets you e-mail the recording:

Pressing that then takes you into e-mail with the recording as an m4a attachment:

Great for sending some notes to myself, sweet nothings to the wife, or orders to the minions!
I know they added multimedia to SMS, but I didn’t investigate it yet. Not a big deal for me as I mostly send them in e-mails anyway, but I know the younger set likes that feature.
I did look into tethering for Internet access. Apparently it is not enabled by default in the beta, and there are many posts that discuss how to hack it to get it working. The caveat I think is that if you are on AT&T (as all US based iPhone users are), even doing that doesn’t work as AT&T will not allow it. Maybe it works, but I won’t try for right now as I don’t want to get busted on that.
However, this does bring me to one of my major peeves about AT&T. I want to use my iPhone as an Internet access device. I used to do this with my Blackjack on AT&T prior to having an iPhone, and I got 3G with it too. When I moved to an iPhone, I had to go and get Sprint CDMA service, which works quite nicely, but I have to carry around another doodad as well as pay Sprint $60-$70 / month for the service.
I just don’t get AT&T with this. I know they are worried about tethering killing their 3G network, but I could do it with my previous phone! And now they make me pay money to another carrier, which I would gladly pay to them for the ability to not have to carry around another gadget!
All I have to say is its just stinkin’ thinkin’ by telecommunications carriers that just don’t know how to provide good service to their customers. Well, I hope they take off their dunce hats by the time iPhone 3.0 is actually released as I’ll be right there to give them that money!
Finally, I noticed one app that didn’t work, but I hadn’t tried all of them yet. It was my Galaga app, so it wasn’t a big deal to me. I do know that others that I know that have upgraded have had difficulty with many other apps, enough to roll back to 2.2.x. However, I’m sticking with it for a while as I really do like these features that I’ve just discussed and am already very used to them enough that not having them would be very bothersome.
efd04e3d-0db6-4746-be74-a2fd76dcdd8b|0|.0
If you've ever worked with Silverlight applications that accept user input, you've probably dealt with setting focus to various controls. In that case you may know this already. If you haven't then this should definitely save you some hassles.
There is an issue with Silverlight having their controls receive initial focus. As an example, take a look at the following silverlight application. This is the first page of the application and it has a text box that I would like to have the focus currently in:

I've actually called the TextBox.Focus() method in the load event of this UserControl, but it doesn't have the focus. What gives?
Well, the problem turns out to be that the Silverlight object in the HTML itself has not received the input focus from the browser, and hence the control in the Silverlight app do not receive the focus as it is somewhere else in the browser. As a matter of fact if you click anywhere on the Silverlight app (lets say in the gray areas) the browser will give the Silverlight control the focus, which then gives it to the specified text box.
So how do we enforce that the Silverlight application receive focus from the browser when it is started? That turns out to be quite simple and involves just a couple lines of JavaScript in the web page serving the Silverlight application:

What you do is add the OnPluginLoaded event property on the silverlight control, and put the script shown as in the head tag. Net time (and every time from now on), your control will get the focus when the application starts:

Yeah!
195712ca-4def-4984-89ca-82d0e9f424d1|0|.0