• Shortcuts : 'n' next unread feed - 'p' previous unread feed • Styles : 1 2

» Publishers, Monetize your RSS feeds with FeedShow:  More infos  (Show/Hide Ads)


Date: Tuesday, 21 May 2013 23:07

Windows 8 Hyper-V is the best thing since Sinclair ZX Spectrum for a developers. As a consultant I love one VM per customer setup. As I tinker with various tech it’s nice to have clean environment to play with. This is how I have configured my ThinkPad W530 Hyper-V with Windows 8 Pro.

Install

Before enabling Windows Hyper-V, you should check if your system supports it by running the CoreInfo utility as an administrator. “Coreinfo –v” will show 3 things. If you see the EPT and * you are good to go. If you need to drop into your BIOS from Windows 8, to enable Virtualization, you can restart in advanced mode: WindowsKey + C –> Settings –> Change PC Settings (on the bottom) –> General –> scroll on the bottom Select Restart under Advanced Startup.

When the Advanced Options boot comes up select : Troubleshoot - > Advanced Options -> UEFI Firmware Settings -> Restart -> Under Security / Virtualization -> Enable VT and VT-d (this is on BIOS on my TP W530)

Of course you can jump into BIOS other ways in your POST before Windows start (Lenovo it’s Enter).

Installing and enabling Hyper-V on windows is accomplished via WindowsKey + C –> Control Panel –> Programs –> Turn Windows Futures On or Off.


image

After you get everything configured you can open Hyper-V manager and connect to your local box.

My Configuration / Phylosophy

First get all the memory you can get for the laptop. I have 32Gb and I have 500GB secondary drive where I store all my VHD’s and VHD library.

Storage setup

On this disk i have VM folder with few sub folders:

image

 

 

 

 

 

 

Clients folder purpose is to have client specific VM setups. Disk is where all VM’s disks go. VHD Library is where I have my base VHDX files. Virtual Machines is the rest of my VM’s I play with.

image

To keep this kind of disk topology you can configure it inside Hyper-V settings when you right click your server name.

image

Network Setup

Right click your server name in the Hyper-V manager and select Virtual Switch Manager. I have 3 networks setup: internal, wired and wireless. Here are all 3 screen shots

image

image

image

There is one more thing to do with Wireless setup. You need to bridge the WiFi and External via Wireless adapters. Go to Control Panel\Network and Internet\Network Connections – select WiFi and Ctrl+Select External via Wireless and right click Add To Bridge.

VM Configuration

First create a base VM. I have two. One with plain OS and one that is Developer pre-loaded e.g. VS 2012. These base images you will use in every VM. There is a catch. You can never change these base images otherwise all your VM’s that use base image will be corrupted. Not ideal but not so bad either.

Setup each of my VM’s consists of System – C.vhdx which is a Differencing disk and I have another disk Development – D where all the files I want to preserve will be stored. My expectation is that C drive can be destroyed at any time while Development disk can be detached and maybe attached to some other VM.

image

To setup new VM here are the steps I go through:

  1. Create new Differencing disk (VHDX)
  2. Name it [something you can recgonize] – System e.g. “Clear Lines – System.vhdx”
  3. Select your base VHDX – these are created previously from VHD Library Folder
  4. Create new VM
  5. Use 1024 startup memory
  6. Use Dynamic Memory
  7. Select Internal, Wired or Wireless or none (you can change it later)
  8. Use existing Virtual Disk (Clear Lines – System.vhdx)
  9. Open Settings of your newly created machine
  10. Add secondary drive under SCSI controller e.g. “Clear Lines – Develpment.vhdx”

image

Now you can start your VM. At this step you could be done but I recommend that you run sysprep on the newly created VM. When you do so you will need the key to active syspreped OS.

To sysprep drop to admin command prompt WindowsKey+X. Navigate to C:\Windows\System32\Sysprep\ and type sysprep. After pressing enter you will get following window:

image

Tips

Updating base image

I mentioned above that once you have base image you will not be able to change it because it will break all the VMs that depend on it. While this is unfortunate I don’t see this a big deal. I wait until there are about 50-60 windows updates and then update the base image. After that I have to re-create the system drive of each VM. This might seem crazy but its fast to do. In the same time I add other goodies to my base machine like refresh of NugetLocal cache of all packages (how to: here, here, here).

Accessing VM

If you double click the VM you will open Virtual Machine Connection manager. This thing is just weird. You cannot pass your clipboard to it. You have to use the menu (exit full screen mode) select Clipboard menu and then Select paste. Instead you can use regular RDP client and connect to VM via IP. You can find the IP of the VM in the Networking tab:

image

You should adjust your VM display resolution to max so that it fits in the Connection Manager. You might need to try few settings.

Accessing Host from VM

If you are on the plane and need to access the host switch to Internal network. After that you can open Windows Explorer and navigate to your host via Network or just \\[your box name].

Accessing USB drives attached to the Host

This one is PITA. Plug your USB drive. Open Disk Manager WindowsKey+X. Right click on the disk and take it offline.

image

Now, go to settings of your VM. Select SCSI interface and new disk. Select Physical drive and select your USB drive. You can do this while VM is running (must be SCSI interface thought).

image

Hopefully you find this useful. If you have any other tips and/or setup configurations let me know. I will try to add others as I remember them

Author: "admin" Tags: "Tips & Tricks"
Comments Send by mail Print  Save  Delicious 
Date: Thursday, 14 Feb 2013 19:19

There are fair amount of questions on SO where diagnosing problems with WCF is nonstarter because we need lot more information about the problem. To gather some details for the reason WCF is not functioning correctly on the server or the client you can turn on WCF diagnostics on your service to get more details about exceptions.

To get you going quickly - in your web (or app) config:

1) Add System.Diagnostics section anywhere under configuration element. You can replace path with which ever path you want the files to be stored at.

<system.diagnostics>
    <sources>
      <source name="System.ServiceModel.MessageLogging" switchValue="Warning, ActivityTracing">
        <listeners>
          <add type="System.Diagnostics.DefaultTraceListener" name="Default">
            <filter type="" />
          </add>
          <add name="ServiceModelMessageLoggingListener">
            <filter type="" />
          </add>
        </listeners>
      </source>
      <source name="System.ServiceModel" switchValue="Warning, ActivityTracing" propagateActivity="true">
        <listeners>
          <add type="System.Diagnostics.DefaultTraceListener" name="Default">
            <filter type="" />
          </add>
          <add name="ServiceModelTraceListener">
            <filter type="" />
          </add>
        </listeners>
      </source>
    </sources>
    <sharedListeners>
      <add initializeData="C:\temp\services_messages.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="ServiceModelMessageLoggingListener" traceOutputOptions="LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack">
        <filter type="" />
      </add>
      <add initializeData="C:\temp\services_tracelog.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="ServiceModelTraceListener" traceOutputOptions="LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack">
        <filter type="" />
      </add>
    </sharedListeners>
</system.diagnostics>


2) Under system.ServiceModel add following:

<diagnostics wmiProviderEnabled="false">
      <messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" />
</diagnostics>

 

3) Under C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\ start SvcTraceViewer.exe. Load both message trace (services_messages.svclog) and service trace log (services_tracelog.svclog). You can either drag drop files in the tool or open one then add another

4) Look for red bold letters for a problem.

If you want to make your experience editing the WCF configuration more palatable you can use SvcConfigEditor.exe which is found under same folder as SvcTraceViewer.exe (#3). Just open the config file and you should see Diagnostics folder which will allow you to start/stop and configure diagnostics.

Author: "petar" Tags: "WCF"
Comments Send by mail Print  Save  Delicious 
Date: Wednesday, 02 Jan 2013 16:49

The Azure ecosystem under Scott Guthrie’s stewardship has brought us yet another excellent addition to the Azure offering: the Azure Web Site. What I am most excited about in this offering is the deployment speed and simplicity. There are tons of other things that are very attractive… The Azure portal re-design is now rocking. The Azure Web Site dashboard shows you right away the useful information in one place. The Deployment options are numerous. Configure and Scale simplify the most common reason to tweak your site. Web Role is still there, but this opens up scenarios where you do not need Web Role’s fire power.

If you are a developer or an IT professional or if your hosting provider does not meet your needs, you should sign up for a free account (which gives you a lot of free stuff to play with). One of the perks with a free account is the ten (10!) free Web sites which should stay perpetually free! Listen to Scott Guthrie’s key note from Azureconference.net at 25th min (although you should listen the entire key note). I have republished the Web Site Offering Feature Comparison at the bottom of this article (Azure pricing details page has more information) for easier reference.

To get on board with the Azure Web Site we can take two paths, depending on what you use to write your code. If you are using Visual Studio, things are simple: just download the publishing profile (under quick glance) and import it to Visual Studio.

image

Now you have everything you need to publish to the Azure Web Site. Right-click on your Web project, select Publish and magically your code will be beamed to the Cloud. Publishing dialog has been improved a lot too. Hitting “Start Preview” you can actually see the differences between your local copy and what’s being deployed on the Cloud.

image 
If you are using another IDE, you can use FTP, Git or a few other available providers. I have experimented with Git and it seems very simple and usable. If you are new to Git, the deployments section of the Azure Web Site will explain how to deploy using Git under “Push my local files to Windows Azure”. Deployment is triggered by a simple push to the repository provided by the Azure Web Site. You push, they deploy.

What do you need to get that modern web site started?

Infrastructure:

  • IDE - My development weapon of choice is Visual Studio 2012.
  • An Azure trial account or a MSDN license if you have one.
  • Turn on Web Site Preview – Under Account / Preview Features. This option might not be active anymore because this feature could be already part of the standard offering.

Some helpful software and tools that I use:

  • Responsive web framework – there are at least half-a-dozen of these. I am using Twitter’s Bootstrap
  • LESS - The dynamic style sheet language
  • Mindscape Work Bench – LESS/SASS editor/generator
  • Live page load profiler – mini profiler
  • ELMAH – essential in debugging and exception management
  • Route Debugger – helpful with debugging
  • Glimpse – FireBug-like experience within the page
  • WebGrease – a suite of tools for optimizing javascript, css files and images
  • momentjs.com – library to help you working with time constructs in JavaScript

That’s all for now. Let me know what you think. Also, I am curious to hear from you what problems you are solving using Azure (PaaS, SaaS or IaaS).

WEB SITE OFFERING FEATURE COMPARISON

FEATURE FREE SHARED RESERVED
Custom domain name No Yes Yes
Sites 10 per sub region 100 per sub region 100 per sub region
Storage 1 GB per sub region 1 GB per sub region 10 GB per sub region
Storage transactions Included at no charge Included at no charge Included at no charge
Relational database 20 MB of MySQL database per sub region. Shared by all web sites 20 MB of MySQL database per sub region. Shared by all web sites 20 MB of MySQL database per sub region. Shared by all web sites
Data transfer inbound Free Free Free
Data transfer outbound Limited to 165MB per day per sub region, up to 5 GB per region Billed at standard Pay-As-You-Go rates after the initial 5GB* Billed at standard Pay-As-You-Go rates after the initial 5GB*
CPU Up to 60 minutes of CPU cycles per day Up to 240 minutes of CPU cycles per day Dedicated CPU instances
Price Free $0.013** per hour (preview); $0.02 per hour (general availability) $0.08-$0.32 per hour (preview); $0.12-$0.48 per hour (general availability)
Author: "petar" Tags: "Azure"
Comments Send by mail Print  Save  Delicious 
Date: Thursday, 18 Nov 2010 20:12

After a fun talk last night with my local Bay .NET User Group I needed to fix one of my demos that I did not show last night because I ran out of time (always too much content?). Here is the example of Rx and MVVM in action to tame events generated by text box in Silverlight.

The demo I wanted to show is centered around two Rx methods. First is the Observable.FromEvent and the second is the ability to throttle the events with Throttle(TimeSpan) extension methods.

What I wanted to do is to use the MVVM pattern with text box TextChanged event and be able to throttle how often the changed text is being sent to a Bing news API (which is very cool and simple) using web request/response.

The route I went uses attached behavior to the text box (as an example). This behavior is a staging place for Rx to convert the textbox textchanged event in the IObservable via Observable.FromEvent extension method .

In my view (XAML) I have attached the RxEventTrigger behavior to a text box (line 20).

<UserControl
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
    xmlns:ei="clr-namespace:Microsoft.Expression.Interactivity.Core;assembly=Microsoft.Expression.Interactions" 
    xmlns:local="clr-namespace:WebServiceCalls" xmlns:ee="http://schemas.microsoft.com/expression/2010/effects" x:Class="WebServiceCalls.MainPage"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">

    <UserControl.DataContext>
        <local:ViewModel />
    </UserControl.DataContext>

    <Grid x:Name="LayoutRoot" Background="White">
        <StackPanel>
            <TextBox x:Name="Search" Width="190"  Height="29" DataContext="{Binding}" >
                <i:Interaction.Behaviors>
                    <local:RxEventTrigger RxProperty="{Binding TextChangedSource, Mode=TwoWay}" />
                </i:Interaction.Behaviors>
            </TextBox>
        </StackPanel>
    </Grid>
</UserControl>

The behavior implementation is pretty standard. Create a class and inherit from Behavior. I am bit cheating here and limiting this behavior to only textbox but you get an idea.

.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

public class RxEventTrigger : Behavior<TextBox>
{
    public static readonly DependencyProperty RxPropertyProperty = 
        DependencyProperty.Register("RxProperty", typeof(IObservable<string>), 
            typeof(RxEventTrigger), null);

    public IObservable<string> RxProperty
    {
        get { return (IObservable<string>)GetValue(RxPropertyProperty); }
        set { SetValue(RxPropertyProperty, value); }
    }
    protected override void OnAttached()
    {
        this.AssociatedObject.Loaded += AssociatedObject_Loaded;
    }
    void AssociatedObject_Loaded(object sender, RoutedEventArgs e)
    {
        RxProperty = Observable.FromEvent<TextChangedEventHandler, TextChangedEventArgs>(
            h => new TextChangedEventHandler(h),
            h => AssociatedObject.TextChanged += h,
            h => AssociatedObject.TextChanged -= h)
            
            .Select(t => ((TextBox)t.Sender).Text)

            .Throttle(TimeSpan.FromMilliseconds(400))

            .SubscribeOnDispatcher();
    }
}

Line 18 is where we hook into the TextChanged event stream (FromEvent) using Rx, select current text with the projection (Select), throttle user input, so we don’t get every letter they type (Throttle), and finally tell the observable that subscribers should be subscribed on the Dispatcher so we don’t have cross thread issues when the event subscription occurs (+= h, –= h).

The connection between the behavior and the view model happens when we set the RxProperty in the behavior class which is the property we received via binding from the VM that was passed into our view (line 12-14 in the XAML).

Finally our view model will combine the text source and web service calls that will occur every time user stops typing the text.

public class ViewModel : NotifyPropertyChangedBase
{
    #region fields
    private Repository _repository = new Repository();
    private ObservableCollection<NewsArticle> _newsList;
    private IObservable<string> _textChangedSource;
    #endregion

    public ViewModel()
    {
        NewsList = new ObservableCollection<NewsArticle>();
    }

    public IObservable<string> TextChangedSource
    {
        get { return _textChangedSource; }
        set
        {
            _textChangedSource = value;
            OnPropertyChanged(() => TextChangedSource);

            Func<IObservable<int>> clearList = () =>
                                      {
                                          NewsList.Clear();
                                          return Observable.Return(0);
                                      };

            var q = from text in _textChangedSource
                    from clear in Observable.Defer(clearList).SubscribeOnDispatcher()
                    from news in _repository.GetNews(text).Take(3).TakeUntil(_textChangedSource)
                    select news;

            q.ObserveOnDispatcher().Subscribe(
                r=> NewsList.Add(r),
                ex=> Debug.WriteLine(ex.Message),
                ()=> Debug.WriteLine("Complete.")
                );
        }
    }


    public ObservableCollection<NewsArticle>  NewsList
    {
        get { return _newsList; }
        set
        {
            _newsList = value;
            OnPropertyChanged(() => NewsList);
        }
    }
}

Now that we have IObservable for text changes we can combine it with the clearing the NewsList and calling the web service to get 3 articles per user text input all in one LINQ query.

I have introduced a function on the line 22 which clears the list before calling the service. Defer extensions method will call the clearList Func delegate every time new subscription is attached due to text being generated by the text changed event.

I think line 30 is pretty straight forward except the TakeUntil. Take until is acting as a valve that will ignore previous web service results if user has typed some new text into the text box.

For completes here is the GetNews method in the repository:

public class Repository
{
    public IObservable<NewsArticle> GetNews(string word)
    {
        var url = "http://api.search.live.net/xml.aspx?Appid={0}&sources={1}&query={2}";

        var completeUri = String.Format(url, "[your api key here]", "news", word);

        XNamespace ns = "http://schemas.microsoft.com/LiveSearch/2008/04/XML/news";

        var q = from v in Observable.Defer(() => Observable.Return(WebRequest.Create(completeUri)))
                from e in Observable.FromAsyncPattern<WebResponse>(v.BeginGetResponse, v.EndGetResponse)()
                from r in Observable.Return(XDocument.Load(e.GetResponseStream()))
                from t in r.Descendants().Elements(ns + "NewsResult").ToObservable()
                from i in Observable.Return(t.Descendants(ns + "Title").First().Value)
                from g in Observable.Return(t.Descendants(ns + "Source").First().Value)
                from o in Observable.Return(t.Descendants(ns + "Date").First().Value)
                select new NewsArticle { Headline = i, Source = g, Date = DateTime.Parse(o)};

        return q;
    }

}

public struct NewsArticle
{
    public string Headline { get; set; }
    public string Url { get; set; }
    public string Source { get; set; }
    public DateTime Date { get; set; }
}
Author: "petar" Tags: "C#, How To, LINQ, Reactive Extensions, S..."
Comments Send by mail Print  Save  Delicious 
Date: Wednesday, 15 Sep 2010 22:25

Take time to study the Reactive Extensions (Rx) because its a very critical for your tool belt. Rx enables some complex scenarios and all but eliminates lot of +=, –= nonsense (event subscribe / unsubscribe). This is specially important in Silvelright development.

Here are the few good resources to get started from my Diigo account.

If I would to pick out some of the so many ways Rx can help, I would say that choosing appropriate scheduler (e.g. UI thread) to execute or subscribe, creating and manipulating time and consuming asynchronous operations is just a tip of the iceberg.

This is the main page to get the Rx. Rx libraries exist for Silverlight, .NET 4 and Javascript.

Go have fun.

Author: "petar" Tags: "Uncategorized"
Comments Send by mail Print  Save  Delicious 
Date: Tuesday, 13 Jul 2010 17:17

Watching the Cloud Cover episode 17, Steve Marx shows a nice and simple cloud storage management, web based tool to manage Azure Storage https://myazurestorage.com/.

At the same time I was playing around with Cloud Storage Studio. I am not sure why these guys are charging $60 bucks for their Storage Studio product.

Attached Media: video/x-ms-wmv (552 961 ko)
Author: "petar" Tags: "Uncategorized"
Comments Send by mail Print  Save  Delicious 
Date: Tuesday, 04 May 2010 14:40

If you are victim to this exception: “FormatException: Invalid hexadecimal string format” thrown by the WCF you can get rid of it easily. If you have copied the value from the cert manager, notice that there is a space before the 30.

image

This space is invalid character that will not show up in your config file.

image

If you paste the same certificate thumbprint in notepad the bad character will be reviled.

image

Author: "petar" Tags: "Tips & Tricks, WCF"
Comments Send by mail Print  Save  Delicious 
Date: Wednesday, 28 Apr 2010 00:00

Another awesomeness from the VS2010 team! When you are debugging your app sometimes its nice to be able to “pin” certain value of the collection. Well, they have done it! You can now pin the row of the variable you are watching.

image

  You can attach a comment to the watched variable!

image 

Unpin from source is useful if you switch windows or want to make the window float across the files or even move it out of the window.imageimage 

Another great feature that has been there for a while is the ObjectId-ing the watched values. Check this blog post about how to use ObjectIds.

Author: "petar" Tags: "Tips & Tricks, Visual Studio"
Comments Send by mail Print  Save  Delicious 
Date: Thursday, 15 Apr 2010 23:03

This is a temporary post that was not deleted. Please delete this manually. (9419f8cf-731b-4606-85d5-a275e33d8362 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)

Share and Enjoy: Digg del.icio.us Facebook Mixx Google Bookmarks Diigo DotNetKicks email Reddit StumbleUpon Twitter


Author: "petar" Tags: "Uncategorized"
Comments Send by mail Print  Save  Delicious 
Date: Wednesday, 14 Apr 2010 23:33

Small things in life is what makes a happy life. After years of waiting I found happiness with Visual Studio 2010. I am floating. I know that VS 2010 has a TON of new things but boy I am so glad they have started treating all windows equally!

Visual Studio 2010 is finally treating all the VS editors and windows equality with their multi-monitor support. I have always wrestled with the Output window never feeling comfortable where ever I put it. Now that I can make it just like any other window things have finally in the right place

image

With the new multi-monitor support you can now move your code windows between monitors!!

 image

image

And you can send the document back to a tab by either dragging it into the main IDE window or using the menu.

image

What are your favorite features of Visual Studio 2010?

Share and Enjoy: Digg del.icio.us Facebook Mixx Google Bookmarks Diigo DotNetKicks email Reddit StumbleUpon Twitter


Author: "petar" Tags: "Tips & Tricks, Visual Studio"
Comments Send by mail Print  Save  Delicious 
Date: Friday, 16 Oct 2009 10:18

Can your television set stream the Internet entertainment content in the way that rivals traditional television? Do you feel that we have arrived at the point where we can break the chains that bind us to our CATV companies? Are we at the tipping point where CATV will become thing of the past?

Cable television (CATV)

“Cable television, formerly known as Community Antenna Television or CATV, was born in the mountains of Pennsylvania in 1948. “ -- about.com:invetors

I don’t think that John and Margaret Walson could have imagined what would become of the CATV in the next 60 years.

The National Cable & Telecommunication Association has a good article summarizing the history of cable television. Below are some excerpts:

The 1940s and 1950s Cable television originated in the United States almost simultaneously in Arkansas, Oregon and Pennsylvania in 1948 to enhance poor reception of over-the-air television signals in mountainous or geographically remote areas. “Community antennas” were erected on mountain tops or other high points, and homes were connected to the antenna towers to receive the broadcast signals.”…

2000 and Beyond Arrival of the new millennium brought with it hopes and plans for acceleration of advanced services over cable’s broadband networks.

As the new millennium got under way, cable companies began pilot testing video services that could change the way people watch television. Among these: video on demand, subscription video on demand, and interactive TV. The industry was proceeding cautiously in these arenas, because the cost of upgrading customer-premise equipment for compatibility with these services was substantial and required new business models that were both expansive and expensive.

In 2001, partly in response to those demands, AT&T agreed to fold its cable systems with those of Comcast Corp., creating the largest ever cable operator with more than 22 million customers.” --  ncta.com

You can find more about the history of cable television here.

You love your TV (they know)

Brad A. Myers' web site has an interesting compilation of facts about TV, internet and computers. Although the time frame of the article quotes below vary greatly (some go back to 1995), I have outlined some of the more interesting quotes:

"...[H]ouseholds that receive about 60 channels usually watch only 15.  Households whose systems can receive 96 channels (around the national average) actually watch ... 15." -- Steven Levy, "Television Reloaded", Newsweek, May 30, 2005, p. 55

"The average American child spends 900 hours a year in school--and 1,500 hours a year watching television." -- Jonathan Alter, "It's 4:00pm. Do You Know Where Your Children Are?" Newsweek, April 27, 1998, p.31

"In the world there are some 89,000 movie picture screens; there are 790 million TV households, there are 50 million paid subscribers, there are 315 million homes with videocassette recorders, who last year rented or bought 7.3 billion pre-recorded videocassettes. And last year alone, there were over 2,000 films that were produced, not to mention the many thousands of television shows." -- "Bud Yorkin Plays Kresge Theatre", Carnegie Mellon Magazine, Vol. 14, no. 1, Fall, 1995, p. 11

"... 16 million personal computers will be sold in the United States in 1995 and a further 34 million units worldwide. Workstation sales will add a million units more. To put this in perspective, PCs' and automobiles' yearly unit sales are now in the same ball park. By the end of 1994, the installed base of PCs exceeded 80 million units in the United States and 200 million worldwide (0.3 and 0.035 unit per person respectively). Intel Corp. chairman Andy Grove predicts that by the end of this decade, PC sales will surpass 100 million units worldwide--more than sales of cars or TVs." -- Egil Juliussen, "Small Computers," IEEE Spectrum, January, 1995, p. 44

Why CATV feels like a dinosaur today

Barrier to entry is high

If you think about it, the barer to your ability to show the content on your TV from a cable or dish provider is pretty high here in the US.

Each provider requires you to have a piece of hardware that allows you to decode the data stream coming from their central office. Big hunk of metal - not good for anything else. Lately they are combining these with the DVRs but software that comes with these DVRs is lacking a lot of features to make them manageable. Also none of them can socialize with any other electronics you might have lying around your house!

When you have settled and picked the provider of your choice, you must buy a “package”. These packages have a range of products bundled together such as internet access, high-def channels, local channels, sport, phone service, premium channels, etc. On average, the price for a good set of channels bundled with internet will run you over $100 dollars a month.

CATV content is unmanageable

CATVs premise is “watch now”. You cannot browse backwards in time or freeze the content. You have to purchase additional equipment (DVR, TIVO) if you like to do anything else. Of course this all adds up, DVR is X dollars per month; TIVO is not cheap either.

There is a somewhat moderate effort to make CATV flexible with the On-Demand service where you can retrieve past shows but its a far cry from the versatility and flexibility offered by computers today.

Cannot customize “my” entertainment

Trying to “design” your package with the channels you want is impractical because you will get penalized and pay an arm and a leg for it. The price of offered packages compared to their value is not proportional, in my opinion, and the prices keep going up.

You can play this exhausting game where you have to call the customer service, threatening to disconnect cable, so they can put you on some kind of promotion for six months and keep cost down. After the these promotions end, you mind find that the price of your package costs as much as a payment for a small car.

Competitive landscape is bleak at best and full of confusion in the CATV land.

Landscape is changing

TiVo has enabled us with the freedom to watch a broadcast program when it is convenient to us. The user experience with operating the remote control and the TiVo program is innovative enough to allow the average person not to be intimidated with the TiVo box.

TiVo HD XL DVR

TiVo is great with the fire-and-forget kind of programming where you subscribe to a broadcast you like and TiVo will hunt down new and old episodes you have not yet seen. However, TiVo suffers from the same fault as the CATV box (DVR or whatever you use) because it’s hard to make it socialize with other devices that might be present in your household and its internal workings are fixed and unchangeable (you can hack these boxed but that’s whole another set of problems). They did add some portability where you can see the content on the mobile device, which helps with flexibility of use.

As of late, TiVo has extended its universe to cover Netflix, Amazon, and other Video on Demand (VOD) services.

Internet

I started paying more attention to what is being offered on the Web as of lately regarding the video content. I have noticed crop of new sites such as www.hulu.com, www.joost.com, www.boxee.com, and www.sling.com. Sling had an excellent idea early on where you could simply plug SlingBox into your video source allowing you to watch and control your TV from anywhere in the world which is quite awesome.

It is quite clear, from the projects that Vertigo is currently working on, that broadcasters have figured out that Internet Entertainment Broadcasting is coming, and coming fast. For instance, look at our NBC Sports Sunday Night player! Before that we did the CBS inauguration and DNC convention (all in Silverlight), which was broadcasted in HD!! Silverlight is spreading (ITV) and I think its a superior platform for delivery of Rich Entertainment Experiences and not just the Rich Internet Applications.

If you study the TV to Internet landscape, you will find plethora of vendors trying to entertain you on the internet: http://vendr.tv/, http://revision3.com/, http://player.stv.tv/, http://www.ustream.tv, http://www.itv.com/, etc. I think you understand that www.youtube.com is a staple of Internet Entertainment Broadcast. NetFlix really rocks, and so does Amazon, with their video on demand services (VOD).

There is so much going on and so much available, that you will find that you need a service to locate the content such as http://www.findinternettv.com.

Below are insightful statistics that make it clear where the entertainment industry is heading with new the generation:

"More than 9.8 million children are using the Internet, a number projected to triple in the next four years... In a recent poll by CNN and USA Today, 28 percent of teens said they could live without their TV, but only 23 percent said they could get by without a computer." -- Brad Stone, "The Keyboard Kids", Newsweek, June 8, 1998, p. 72

kid

"Given a choice of six media, one-third (33%) of children aged 8 to 17 told KN/SRI that the Web would be the medium they would want to have if they couldn’t have any others. Television was picked by 26% of kids; telephone by 21%; and radio by 15%.  For the top three media, results were dramatically different among girls and boys. Twice as many boys (34% versus 17%) chose TV as their must-have medium, while telephone was more than twice as popular (31% versus 12%) among girls. The Internet placed first with 38% of boys and 28% of girls."

"More Kids Say Internet Is the Medium They Can’t Live Without," StatisticalResearch.com, April 5, 2002 (thanks to Dick Halpern)

I think its obvious that the next generation is hooked on computers.

XBOX

A friend of mine was quite a visionary. He used his Xbox (1.0) exclusively to watch “TV”. This was 2003 and his Xbox was moded to accommodate this way of viewing the CATV programs. I did not like the “moding” part and did not understand it at that time why he was  bothering with it at all!

Today its different. I think we all feel pinched and look everywhere to save money. CATV is not an essential service. CATV has kept us (consumers) paralyzed for the last 60 years with no intention to change!

Look at something like the SkyPlayer for Xbox 360. My jaw dropped when I saw this! Of course its not available in the US (only in UK). Sigh…

I can see how the Xbox can replace that clunky CATV receiver. Combined with Zune software and PlayOn you can get wide coverage of the current Internet Entertainment Broadcast spectrum. The potential to offer so much more is there.

What do I want and what am I willing to give up

To me the entertainment is the mashup of video, internet and real-time broadcasting.

I want the ability to find content, presented in a pleasing environment, with the browsing experience to map to the same mental model of how we browse channels on CATV—but better and richer.

I want my friend to suggest that I watch something and I can watch it instantly or even collaboratively.

I want to view photos from Flickr on my TV.  I would like to see my FriendFeed, Facebook and Twittter streams while I watch a show or a movie (REDUX might be it)!

friendfeed_32 facebook_32 lastfm_32 twitter_32 flickr_32

I find that some sites (1, 2) are a guilty pleasure and would like to see their content “live” and moving on my TV at all times. I want thousands of “channels” that I can search, browse easily, and record easily.

I want HD.

Jay

I do not want to hack anything. No modding or chipping or whatever hacks people do these days. If we are to transition to new media devices they have to work for an average consumer (yes, I did call my self an average consumer).

I want to have a smart content recorder that will find the programs (à la TiVo) by scouring the internet.  This recorder will be smart enough to get the content from both the free and paid providers (eg. NetFlix) with whom I have a subscription.

I want standards that will allow video streaming as well as dynamic content mixed in the stream and consumed by whichever player I like.  I am aware of DLNA but that’s just a start and I think a good one.

I am ok with product advertisements showing up (unobtrusive?). I actually believe that if I see the engaging ad, I might act on it by trying to explore more! I am ok with advertisements because they can offset cost of content production and transmission for the Internet Entertainment Broadcast providers.

I think one thing that is hard to give up is the “office water cooler” effect, where you discuss with your colleagues the shows you have seen the night before.

What am I doing now

I am in the very early stages of trying to figure these things out. I have not given up CATV just yet, but I am close. I have given up the HBO because I cannot afford it. I fear Showtime is next. I believe i can sacrifice the immediacy afforded with CATV (for now) and wait for the show to appear somewhere on the internet.

I am trying to keep it simple.

I have setup my Xbox so that I can watch movies from NetFlix and Amazon. I had some DVD’s that I stored on my computer, and with Zune sharing, I can see those movies on my Xbox. Also, my music lives on my Windows Home Server so I can stream music via Xbox to my television.

I have setup PlayOn to get the Hulu but have not completely committed to the service.

I’ll keep plowing ahead with an effort to completely disconnecting myself from my CATV provider. The only thing I still need, for now, is their internet service. FiOS is coming to all major cities, but I have not had enough time to look into it where I live.

How do you get your entertainment today? CATV or Internet? Any tips you can share?

****************************

I just want to make you aware that I am no expert, nor do I have completely accurate data. I am not endorsing any of the companies mentioned here, but I do like some of them. These are purely my opinions and not those of my employer.

* References Source: http://www.cs.cmu.edu/afs/cs.cmu.edu/user/bam/www/numbers.html

Share and Enjoy: Digg del.icio.us Facebook Mixx Google Bookmarks Diigo DotNetKicks email Reddit StumbleUpon Twitter


Author: "petar" Tags: "Opinions"
Comments Send by mail Print  Save  Delicious 
Date: Friday, 16 Oct 2009 10:18
Can your television set stream the Internet entertainment content in the way that rivals traditional television? Do you feel that we have arrived at the point where we can break the chains that bind us to our CATV companies? Are we at the tipping point where CATV will become thing of the past? Cabl ... (More)
Author: "Petar Vucetin"
Send by mail Print  Save  Delicious 
Date: Thursday, 08 Oct 2009 16:45

It happened to me! The little envelope that is displayed on your icon bar on the right can disappear if you dismiss it by mistake. Finding where to turn on this feature was quite insane.

image

I think Outlook options UX leaves lot to be desired. See the above screenshot for the location of the property to turn the envelope icon back on.

Share and Enjoy: Digg del.icio.us Facebook Mixx Google Bookmarks Diigo DotNetKicks email Reddit StumbleUpon Twitter


Author: "petar" Tags: "General, Tips & Tricks"
Comments Send by mail Print  Save  Delicious 
Date: Thursday, 08 Oct 2009 16:45
It happened to me! The little envelope that is displayed on your icon bar on the right can disappear if you dismiss it by mistake. Finding where to turn on this feature was quite insane. I think Outlook options UX leaves lot to be desired. See the above screenshot for the location of the propert ... (More)
Author: "Petar Vucetin"
Send by mail Print  Save  Delicious 
Date: Thursday, 08 Oct 2009 09:01

I just ran across this article from Stephen Forte. The SQL Azure Manager looks very promising. I have only found that the views that have spaces in their names are not working when right clicking the view and selecting display top 100.

Ability to change database is a gold. Overall this is very helpful tool and you can find it here.

Share and Enjoy: Digg del.icio.us Facebook Mixx Google Bookmarks Diigo DotNetKicks email Reddit StumbleUpon Twitter


Author: "petar" Tags: "Azure, SQL, Tips & Tricks"
Comments Send by mail Print  Save  Delicious 
Date: Thursday, 08 Oct 2009 09:01
I just ran across this article from Stephen Forte. The SQL Azure Manager looks very promising. I have only found that the views that have spaces in their names are not working when right clicking the view and selecting display top 100. Ability to change database is a gold. Overall this is very hel ... (More)
Author: "Petar Vucetin"
Send by mail Print  Save  Delicious 
Date: Wednesday, 30 Sep 2009 14:30
I have finally got the SQL Azure invite. I think the big plus from its predecessor is that you can now use of SQL Management Studio to send queries to the Cloud SQL. Naturally i have tried to run the Northwind create script but it failed on few things. Looks like image and ntext are not supported j ... (More)
Author: "Petar Vucetin"
Send by mail Print  Save  Delicious 
Date: Wednesday, 30 Sep 2009 02:30

I have finally got the SQL Azure invite. I think the big plus from its predecessor is that you can now use of SQL Management Studio to send queries to the Cloud SQL. Naturally i have tried to run the Northwind create script but it failed on few things.

Looks like image and ntext are not supported just yet. Also, any sys(…) tables are also not supported as well as any file group references. Another discovery is that inserting data into tables with no clustered keys was not supported.

I have cleaned up a script a bit and you can find it here.

Petar.

Share and Enjoy: Digg del.icio.us Facebook Mixx Google Bookmarks Diigo DotNetKicks email Reddit StumbleUpon Twitter


Author: "petar" Tags: "Azure, SQL, Tips & Tricks"
Comments Send by mail Print  Save  Delicious 
Date: Wednesday, 05 Aug 2009 09:26
I don’t work much in Blend but i was mocking up something with Blend 3 sketch flow and was in a need to skew an image to look like 3D. I could not quite find what I was looking on the web or around the office so I started my usual poke-around-lets-see-what-this-thing-does. I found in the process t... (More)
Author: "Petar Vucetin"
Send by mail Print  Save  Delicious 
Date: Wednesday, 05 Aug 2009 09:26
I don’t work much in Blend but i was mocking up something with Blend 3 sketch flow and was in a need to skew an image to look like 3D. I could not quite find what I was looking on the web or around the office so I started my usual poke-around-lets-see-what-this-thing-does. I found in the process t ... (More)
Author: "Petar Vucetin"
Send by mail Print  Save  Delicious 
Next page
» You can also retrieve older items : Read
» © All content and copyrights belong to their respective authors.«
» © FeedShow - Online RSS Feeds Reader