Spot the web RSS 2.0
# Wednesday, December 05, 2007

Yesterday I have recieved an invitation to be an alpha tester of Knocka TV.

Tried to register yesterday but got a screen that said - "Knocka TV is down for maintenance", allready not a good start.

After registering today, I can forgive them about yesterday. The site is designed properly, quite easy to control for the common user and the most important thing - it works very nice, the videos are smooth, the content is a bit small but hey - it is still an Alpha version.

Knocka is an Internet television network. It has "channels" of streaming content. Unlike video sharing sites like YouTube, users can't randomly select videos to play when they wish (except clips they've already seen in a stream), nor can they embed Knocka vids in other sites. Kncoka is a destination site, not a media library.

But even though Knocka can be watched in passive mode, like television, Interactivity and community are a big part of the Knocka equation. Viewers can text chat with each other in a window under a running show, and can engage in person-to-person Webcam video chats with their friends. And content is chosen through a combination of user voting and editorial oversight. On the current alpha site, users can vote on clips that play in the channels, and the voting will affect the rotation of a show: Good vote, more plays; bad votes, less. Eventually, Knocka will let its users further upstream in the editorial process. It will let users vote on videos in the submissions bin to help decide what makes it into the channels themselves.

Can the internet community create professional TV? That’s the core question behind the Knocka TV project. Knocka TV offers a stage for creative content produced by the community, supporting individual producers and small production houses in their original creation.

Knocka TV is a User Generated Professional Television Network (or in short UGPTN). It’s a democratic, interactive, and collaborative social television:

  • Democratic: By casting your votes, you choose what’s on.
  • Interactive: Live broadcasting on the internet will allow you to participate and at real-time affect the course of the program. Participate in live interactive shows, go live with your webcam, manipulate the program content in real time together with other viewers and much more.
  • Collaborative: Everyone can participate in creating Knocka TV, from creating channels and programs to cooperating together in creating content.
  • Social: While you watch Knocka TV you can chat, video conference and talk to your friends.

Here is a captured screen:

As I will test it and play with it a bit further I will post updates.

Wednesday, December 05, 2007 1:20:59 PM (Jerusalem Standard Time, UTC+02:00)  #    Comments [1] - Trackback
KnockaTV | Web 2.0
# Tuesday, December 04, 2007

This is one of those "Yeah I've always seen people use it differently but I don't know why!" questions.

Re-throwing exceptions can be misused, although it may not cause any harm to your application - there are multiple ways of re-throwing an exception, most likely for the purpose of bubbling it up to a higher level.

Lets look at how many ways we can use throw:

    1. throw
    2. throw ex
    3. throw new Exception(); 

You should not use #3 except if you are throwing a specific exception other that the one that was fired such as a custom exception. To re-throw an exception in .NET your best option is #1 instead of #2 and that is simply because of how they stack up in the stack trace. Lets take a look at the stack trace for both instances using the following snippet.

 

    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            DoMath();
        }
        catch(Exception ex)
        {
            throw ex;
        }
    }

    /// <summary>
    /// A method that simply calls another method.
    /// </summary>
    /// <remarks>
    /// Just a helper to show stack trace
    /// </remarks>
    private void DoMath()
    {
        MethodWithError();
    }

    /// <summary>
    /// This method will throw an error
    /// </summary>
    private void MethodWithError()
    {
        throw new Exception("Generic exception");
    }

 

The stack trace looks like this:

[Exception: Generic exception]
   throwerror.Page_Load(Object sender, EventArgs e) 
in d:\My Websites\demoweb\throwerror.aspx.cs:22
   System.Web.Util.CalliHelper.EventArgFunctionCaller
(IntPtr fp, Object o, Object t, EventArgs e) +15
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback
(Object sender, EventArgs e) +34
   System.Web.UI.Control.OnLoad(EventArgs e) +99
   System.Web.UI.Control.LoadRecursive() +47
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, 
Boolean includeStagesAfterAsyncPoint) +1061

 

However, if I replace "throw ex;" with just "throw;", here is the new stack trace.

[Exception: Generic exception]
   throwerror.MethodWithError() in d:\My Websites\demoweb\throwerror.aspx.cs:42
   throwerror.DoMath() in d:\My Websites\demoweb\throwerror.aspx.cs:34
   throwerror.Page_Load(Object sender, EventArgs e) in d:\My Websites\demoweb\throwerror.aspx.cs:22
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +15
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +34
   System.Web.UI.Control.OnLoad(EventArgs e) +99
   System.Web.UI.Control.LoadRecursive() +47
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1061

 

Its all about the details. Obviously, using just "throw;" gives us much more details - so use "throw" to re-throw an error.

Tuesday, December 04, 2007 5:10:06 PM (Jerusalem Standard Time, UTC+02:00)  #    Comments [0] - Trackback
.Net | Visual Studio | Programming

Now that the .NET Framework 3.5 has been released, this version includes logic to detect the presence of the .NET Framework 3.5 and also .NET Framework 3.0 service packs, which was missing from previous versions of this sample code.

You can download updated versions of the sample code at the following locations:

For reference, the registry locations used in this sample code to detect the .NET Framework 3.0 service pack level and the .NET Framework 3.5 are listed below.

To detect the .NET Framework 3.0 service pack level:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0]
SP = <value>

Note - this SP value will not exist at all if you only have the original release of the .NET Framework 3.0.  This value was added starting in the .NET Framework 3.0 SP1 and will be updated for future service packs.

To detect the .NET Framework 3.5 final release:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5]
Install = 1
Version = 3.5.21022.08

To detect the .NET Framework 3.5 service pack level:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5]
SP = <value>

Note - this SP value does exist in the final release of the .NET Framework 3.5, and will be set to 0.  Future service packs will increment this value as appropriate.

Tuesday, December 04, 2007 5:01:18 PM (Jerusalem Standard Time, UTC+02:00)  #    Comments [0] - Trackback
.Net | Microsoft | Visual Studio
Navigation
Archive
<December 2007>
SunMonTueWedThuFriSat
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345
About the author/Disclaimer

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2012
Guy Levin
Sign In
Statistics
Total Posts: 63
This Year: 0
This Month: 0
This Week: 0
Comments: 14
Themes
All Content © 2012, Guy Levin