Русский / English

Safari hole exploited in seconds at security conference

Friday, 20 March 2009 22:57 by tunnel

Charlie Miller

Charlie Miller won $5,000 after demonstrating a new Safari exploit as part of the Pwn2Own hacking contest at CanSecWest.

(Credit: Elinor Mills/CNET)

VANCOUVER, Canada--The security expert who won $10,000 hacking a MacBook Air in less than two minuteslast year won $5,000 on Wednesday by exploiting a hole in Safari in 10 seconds or so.

Charlie Miller, principal security analyst at Independent Security Evaluators, used a MacBook running the latest version of the Mac OS as part of a contest at theCanSecWest security conference called "Pwn2Own," which is hacker slang for gaining control of a computer.

The security hole, which Miller said he discovered last year, allows a remote attacker to gain control of a machine simply by getting the computer user to click on a malicious URL, as Miller demonstrated.

"It's not easy, but this worked with one click" from the Safari browser, he said.

Miller is prevented by contest rules from revealing details of the exploit. He said he told Apple representatives what he planned to do earlier in the day. "They're happy because they get free research and get a bug fixed," he said.

The contest is sponsored by TippingPoint, which will share details on the exploit with Apple and develop a patch for it. TippingPoint is offering $5,000 for each new exploit demonstrated in the major browsers and $10,000 for each successful exploit in the major smartphones, as well.

Previously, Miller discovered a hole in the mobile version of Safari shortly after the iPhone was launched in 2007.

Later in the day, a 25-year-old computer science student at the University of Oldenburg in Germany, won $15,000 for exploits he demonstrated in IE 8, Safari, and Firefox. The student, who declined to give his full name, gets to keep the Sony Vaio he did his exploits on, and Miller gets to keep the MacBook he used.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags:   , , ,
Categories:   IT News
Actions:   E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed

Microsoft 2019

Monday, 16 March 2009 02:18 by tunnel
microsoft 2019.jpg

At the Wharton Business Technology Conference, Microsoft’s Business Division president Stephen Elop presented a video that predicted the uses of technology in the year 2019. The video shows future technologies that Microsoft Labs are considering including a wall that connects two classrooms in different parts of the world, lots of old school tech that connects with other stuff, touch displays, electronic newspapers and there’s a bit we love where someone photos someone’s presentation with their laptop and then takes their shot and starts interacting with the ’smart’ items in it.

 

 


<a href="http://video.msn.com/?mkt=en-GB&playlist=videoByUuids:uuids:a517b260-bb6b-48b9-87ac-8e2743a28ec5&showPlaylist=true&from=shared" target="_new" title="Future Vision Montage">Video: Future Vision Montage</a>

On their OfficeLabs website, Microsoft asks:

How will emerging technology improve our productivity in the years ahead? What opportunities will arise from evolving trends and global change? Microsoft has collaborated with customers, partners, and thought leaders across multiple disciplines to develop scenarios that explore how long-term trends, customer challenges, and emerging technologies might converge to improve our lives, both at work and home.

There’s a longer version of this film here.

Stepeh Elop’s PPT is available here too.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Operating System Interface Design Between 1981-2009

Monday, 16 March 2009 00:36 by tunnel

guiA Graphical User Interface (GUI for short) allows users to interact with the computer hardware in a user friendly way.

Over the years a range of GUI’s have been developed for different operating systems such as OS/2, Macintosh, Windowsamiga, Linux, Symbian OS, and more.

We’ll be taking a look at the evolution of the interface designs of the major operating systems since the 80’s.

I should mention that this article showcases only the significant advances in GUI design (not operating system advances) and also not all of the graphical user interfaces and operating systems existing today.The first GUI was developed by researchers at Xerox Palo Alto Research Center (PARC) in the ’70s. This research opened a whole new era of computer graphic innovations.The first personal computer which used a modern graphical user interface was the Xerox Alto, developed in 1973. This was not a commercial product and was intended mainly for research at universities.

1Source: toastytech.com

 

1981-1985

Xerox 8010 Star (released in 1981)

This was the first system that was referred to as a fully integrated desktop computer including applications and a GUI. It was known as “The Xerox Star”, later renamed“ViewPoint” and later again renamed to “GlobalView”.

Xerox 8010 Star
Xerox 8010 Star, Source: toastytech.com

 

Apple Lisa Office System 1 (released in 1983)

Also referred to as Lisa OS, which in this case is short for Office System. It was developed by Apple with the intention of being a document processing workstation.

Unfortunately this workstation didn’t last, it was killed by Apple’s Macintosh operating system that was more affordable.

There were upgrades to Lisa OS, Lisa OS 2 in 1983 and Lisa OS 7/7 3.1 in 1984, that upgraded the system itself, but not the graphical user interface.

Apple Lisa 1
Apple Lisa OS 1, Source: GUIdebook

 

Apple Lisa OS 1
Apple Lisa OS 1, Source: GUIdebook

 

VisiCorp Visi On (released in 1984)

Visi On was the first desktop GUI developed for the IBM PC. This system was targeted towards big corporations and came with a high price tag. The GUI made use of a mouse, it had a built-in installer and help system and it didn’t use icons.

Visi On
VisiCoprt Visi On, Source: toastytech.com

 

Visi On
VisiCoprt Visi On, Source: toastytech.com

 

Mac OS System 1.0 (released in 1984)

System 1.0 was the first operating system GUI developed for the Macintosh. It had several features of a modern operating system, being windows based with icons. The windows could be moved around with the mouse and files and folders could be copied by dragging and dropping onto the target location.

Mac OS 1
Apple Mac System 1.0, Source: toastytech.com

 

Amiga Workbench 1.0 (released in 1985)

When first released, Amiga was ahead of its time. The GUI included features such as color graphics (four colors: black, white, blue, orange), preemptive multitasking, stereo sound and multi-state icons (selected and unselected).

Amiga Workbench 1.0
Amiga Workbench 1.0, Source: GUIdebook

 

Amiga Workbench 1.0
Amiga Workbench 1.0, Source: GUIdebook

 

Windows 1.0x (released in 1985)

In this year Microsoft finally caught up with the whole graphical user interface craze and released Windows 1.0, its first GUI based operating system (although no one would dare to refer to it as one). The system featured 32×32 pixel icons and color graphics. The most interesting feature (which later was omitted) was the icon of the animated analog clock.

Windows 1
Microsoft Windows 1.01, Source: makowski-berlin.de

 

Windows 1
Microsoft Windows 1.01, Source: makowski-berlin.de

 

GEM (released in 1985)

GEM (Graphical Environment Manager) was a windowing style GUI created by Digital Research, Inc. (DRI). It was initially created for use with the CP/M operating system on the Intel 8088 and Motorola 68000 microprocessors and was later developed to run on DOS as well. Most people will remember GEM as the GUI for the Atari ST computers. It was also used on a series Amstrad’s IBM compatible computers. It was the core for Ventura Publisher and a few other DOS programs. The GUI was also ported to other computers but did not gain popularity on them.

gem_11_desktop1
Source: Wikipedia

 

1986 - 1990

IRIX 3 (released in 1986, first release 1984)

The 64-bit IRIX operating system was created for UNIX. An interesting feature of this GUI is the support for vector icons. This feature was built into the GUI long before Mac OS X even existed.

irix-33
Silicon Graphics IRIX 3.0, Source: osnews.com

 

GEOS (released in 1986)

The GEOS (Graphic Environment Operating System) operating system was developed by Berkeley Softworks (later GeoWorks). It was originally designed for the Commodore 64 and included a graphical word processor, called geoWrite and a paint program called geoPaint.

geos_commodore_64
Source: Wikipedia

 

Windows 2.0x (released in 1987)

In this version, the actual management of the windows had significantly improved. The windows could be overlapped, resized, maximized and minimized.

Windows 2
Microsoft Windows 2.03, Source: guidebookgallery.org

 

Windows 2
Microsoft Windows 2.03, Source: guidebookgallery.org

 

OS/2 1.x (released in 1988)

OS/2 was originally co-developed by IBM and Microsoft, but in 1991 the two companies split up, with Microsoft incorporating the technology in its own Windows GUI and IBM developing OS/2 further. The GUI used in OS/2 was called “Presentation Manager”. This version of the GUI only supported monochrome, fixed icons.

Os 2 1
Microsoft-IBM OS/2 1.1, Source: pages.prodigy.net

 

Os/2 1
Microsoft-IBM OS/2 1.1, Source: pages.prodigy.net

 

NeXTSTEP / OPENSTEP 1.0 (released in 1989)

Steve Jobs came up with the idea to create the perfect research computer for universities and research labs. This idea later evolved into a startup called NeXT Computer Inc.

The first NeXT computer was released in 1988, however significant advances were made in 1989 with the release of the NeXTSTEP 1.0 GUI, which later evolved into OPENSTEP.

The GUI’s icons were bigger (48×48) and it introduced more colors. The GUI was initially monochrome, but version 1.0 started supporting color monitors too. This screenshot gives you have a peek into what would become the modern GUIs.

Nextstep 1
NeXTSTEP 1.0, Source: kernelthread.com

 

OS/2 1.20 (released in 1989)

The next minor version upgrade of the GUI showed slight improvements in many areas. The icons looked nicer and the windows were smoother.

Os 2 12
OS/2 1.2, Source pages.prodigy.net

 

Windows 3.0 (released in 1990)

By this version, Microsoft had realized the real potential in GUI’s and started to significantly improve them.

The operating system itself supported standard and 386 enhanced modes, which made use of higher memory capacity than 640 KB and hard disk space, resulting in the ability to use higher screen resolutions and better graphics, such as Super VGA 800×600 and 1024×768.

Also, Microsoft hired Susan Kare to design the Windows 3.0 icons and to add a unified style to the GUI.

Windows 3
Microsoft Windows 3.0, Source: toastytech.com

 

Windows 3
Microsoft Windows 3.0, Source: toastytech.com

 

1991 - 1995

Amiga Workbench 2.04 (released in 1991)

Many improvements were made to this version of the GUI. The color scheme changed and a 3D look was introduced. The desktop could be divided vertically into screens of different resolutions and color depths, which nowadays seems a little odd. The default resolution of Workbench was 640×256, but the hardware supported larger resolutions too.

Amiga Workbench 2
Commodore Amiga Workbench 2.04, Source: guidebookgallery.org

 

Mac OS System 7 (released in 1991)

Mac OS version 7.0 was the first Mac OS GUI which supported colors. Subtle shades of grey, blue and yellow were added to icons.

Macos 7
Apple Mac OS System 7.0, Source: guidebookgallery.org

 

Macos 7
Apple Mac OS System 7.0, Source: guidebookgallery.org

 

Windows 3.1 (released in 1992)

This version of Windows included TrueType fonts which were pre-installed. This effectively made Windows a functional desktop publishing platform for the first time.

Previously, it was only possible to achieve such functionality in Windows 3.0 using the Adobe Type Manager (ATM) font system from Adobe. This version also contained a color scheme named Hotdog Stand, which contained bright hues of red, yellow and black.

This color scheme was designed to help people with some degree of color blindness see text/graphics on the screen easier.

windows_311_workspace
Source: Wikipedia

 

OS/2 2.0 (released in 1992)

This was the first GUI that was subjected to international acceptance, usability and accessibility testing. The entire GUI was developed using object-oriented design. Every file and folder was an object which could be associated with other files, folders and applications. It also supported drag and drop functionality and templates.

Os 2 2
IBM OS/2 2.0, Source: toastytech.com

 

Os 2 2
IBM OS/2 2.0, Source: toastytech.com

 

Windows 95 (released in 1995)

The user interface was completely re-designed since version 3.x. This was the first Windows version where a small close button was added to each window.

The design team gave states (enabled, disabled, selected, checked, etc.) to icons and other graphics. The famous Start button appeared for the first time.

This was a huge step forward for Microsoft regarding the operating system itself and the unified GUI.

Windows 95
Microsoft Windows 95, Source: guidebookgallery.org

 

Windows 95
Microsoft Windows 95, Source: guidebookgallery.org

 

1996 - 2000

OS/2 Warp 4 (released in 1996)

IBM released OS/2 Warp 4 which brought a significant facelift to the workspace.

Icons were placed on the desktop, where custom files and folders could also be created. The shredder appeared which was similar to Windows’ Recycle Bin or Mac OS’s Trash, except it deleted the file or folder instantly and didn’t store any additional copies for later retrieval.

Os 2 Warp 4
IBM OS/2 Warp 4, Source: toastytech.com

 

Os 2 Warp 4
IBM OS/2 Warp 4, Source: toastytech.com

 

Mac OS System 8 (released in 1997)

256 color icons were the default in this version of the GUI. Mac OS 8 was one of the early adopters of isometric style icons, also called pseudo-3D icons. The platinum grey theme used here became a trademark for future versions of the GUI.

Macos 8
Apple Mac OS 8, Source: guidebookgallery.org

 

Windows 98 (released in 1998)

The icon styles were almost the same as in Windows 95, but the whole GUI could use more than 256 colors for rendering. Windows Explorer changed almost completely and the “Active Desktop” appeared for the first time.

Windows 98
Microsoft Windows 98, Source: toastytech.com

 

KDE 1.0 (released in 1998)

This is how the KDE team described the project upon releasing version 1.0: “KDE is a network transparent, contemporary desktop environment for UNIX workstations. KDE seeks to fill the need for an easy to use desktop for Unix workstations, similar to the desktop environments found under the MacOS or Window95/NT. A completely free and open computing platform available to anyone free of charge including its source code for anyone to modify.”

800px-kde_10Source: Wikipedia

 

BeOs 4.5 (released in 1999)

The BeOS operating system was developed for personal computers. It was originally written by Be In in 1991 to run on BeBox hardware. It was later further developed to take advantage of newer technologies and hardware such as symmetric multiprocessing by utilizing modular I/O bandwidth, pervasive multithreading, preemptive multitasking and a custom 64-bit journaling file system known as BFS. The BeOS GUI was developed on the principles of clarity and a clean, uncluttered design.

800px-beos_desktop
Source: Wikipedia

 

GNOME 1.0 (released in 1999)

GNOME desktop was mainly developed for Red Hat Linux, later it was developed for other Linux distributors as well.

Gnome 1
Red Hat Linux GNOME 1.0.39, Source: visionfutur.com

 

2001 - 2005

Mac OS X (released in 2001)

In early 2000 Apple announced their new Aqua interface and in 2001 the company released it with their brand new operating system called Mac OS X.

The default 32 x 32 and 48 x 48 icons were changed to big 128 x 128 anti-aliased and semi-transparent icons.

Lots of criticism followed after the release of this GUI. Apparently users were not quite ready for such a big change, but soon enough they adopted the new style and today this GUI represents the basis of all Mac OS X operating systems.

Mac osx 1
Apple Mac OS X 10.1 Source: guidebookgallery.org

 

Windows XP (released in 2001)

As Microsoft tends to change their GUI completely with every major operating system release, Windows XP was no exception. The GUI itself is skinnable, users could change the whole look and feel of the interface. The icons were 48 x 48 in size by default, rendered in millions of colors.

Windows xp
Microsoft Windows XP Professional, Source: guidebookgallery.org

 

KDE 3 (released in 2002)

Since version 1.0, the K Desktop Environment improved significantly. They polished all the graphics and icons and unified the whole user experience.

Kde 3
KDE 3.0.1, Source: netbsd.org

 

2007 - 2009 (current)

Windows Vista (released in 2007)

This was Microsoft’s response to their competition. They also included quite a lot of 3D and animation. Since Windows 98, Microsoft has always tried to improve the desktop. With Windows Vista they released widgets and a somewhat improved replacement of the Active Desktop.

Windows Vista
Microsoft Windows Vista, Source: technology.berkeley.edu

 

 

 

Mac OS X Leopard (released in 2007)

With their 6th generation, Mac OS X system Apple, once again improved the user interface. The basic GUI is still the Aqua with its candy scroll bars and platinum grey, blue colors. The new GUI features a more 3D look, with the 3D dock and lots more animation and interactivity.

Mac osx Leopard
Apple Mac OS X 10.5 Leopard, Source: skattertech.com

 

GNOME 2.24 (2008)

GNOME put a lot of effort into creating the themes and artwork into v2.2.4 as their aim is “to make your computer look good”. They ran a competition to collect some of the most intruiging desktop backgrounds that their contributors have produced for use in v2.24.

gnome_en_gb
Source: gnome.org

KDE (v4.0 Jan. 2008, v4.2 Mar. 2009)

Version 4 of K Desktop Environment produced many new improvements to the GUI such as animated, smooth, efficient window management and support for desktop widgets. The icons size are easily adjustable and almost every design element is much easier to configure. Some of the most noticeable changes include new icons, themes and sounds, which are provided by the Oxygen Project. These icons are more photorealistic. It is definitely a big improvement to the earlier versions of KDE. It can now also be run on Windows and Mac OS X platforms.

kdeSource: Wikipedia

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

ASP.NET Control Toolkit – JQuery Equivalents

Sunday, 8 March 2009 01:15 by tunnel

I’ve been a big fan of JQuery for a long time now, as I find myself using the ASP.NET MVC framework more and more, I find that I’ll tend to look towards a JQuery plugin as my first port of call if I need some client side functionality. However I’ve worked with a number of people who really like the ASP.NET AJAX control toolkit, usually these people don’t have much exposure to the vast richness of the JQuery landscape. So I thought it might be useful to point out some JQuery equivalents to the ASP.NET Ajax control toolkit:

 

ASP.NET Control Toolkit Accordian

JQuery:

image

http://jquery.bassistance.de/accordion/demo/

 


ASP.NET Control Toolkit Always Visible

JQuery:

This control shows a section of text that is always visible.

image

http://www.west-wind.com/WebLog/posts/388213.aspx

Alternatively the following code will provide the same effect as the ASP.NET control:

 

   1: $(window).scroll(function() {        
   2:         $('#jqueryScroll').animate({ top: $(window).scrollTop() + "px" }, { queue: false, duration: 350 });
   3: });

 


 

ASP.NET Control Toolkit Autocomplete

JQuery:

When you have typed more content than the specified minimum word length, a popup will show words or phrases starting with that value, the JQuery version can be easily bound to an ASP.NET MVC view that returns JSON data.

image

http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/

 


 

ASP.NET Control Toolkit Calendar

Standard calendar functionality

JQuery:

image

http://dev.jquery.com/view/trunk/ui/demos/functional/#ui.datepicker

 


 

ASP.NET Control Toolkit Cascading Dropdown

Surprisingly I couldn’t find a prebuilt JQuery plugin, the following links do show how simple it is to create using JQuery:

JQueryhttp://devlicio.us/blogs/mike_nichols/archive/2008/05/25/jquery-cascade-cascading-values-from-forms.aspx

Other notable method (http://weblogs.asp.net/stephenwalther/archive/2008/09/06/asp-net-mvc-tip-41-creating-cascading-dropdown-lists-with-ajax.aspx)

 


 

ASP.NET Control Toolkit Collapsible Panel

JQuery:

image

http://roshanbh.com.np/2008/03/expandable-collapsible-toggle-pane-jquery.html orhttp://www.webdesignerwall.com/tutorials/jquery-tutorials-for-designers/

 


 

ASP.NET Control Toolkit Confirm Button

Very similar in functionally to the modal dialog plugin and the thickbox plugin.

JQuery:

image

http://www.ericmmartin.com/projects/simplemodal/

 


 

ASP.NET Control Toolkit Drag Panel

The standard JQuery UI library has the Dialog feature which is on par with the ASP.NET control toolkit.

JQuery:

image

http://docs.jquery.com/UI/Dialog

 


 

ASP.NET Control Toolkit DropDown

Simple menu drop down navigation

JQuery:

image

http://ayozone.org/2008/02/06/drop-down-menu-with-jquery/

 


   

 

ASP.NET Control Toolkit Drop Shadow

Create drop shadows around page elements, no images needed.

JQuery:

image

http://plugins.jquery.com/project/DropShadow

 


 

ASP.NET Control Toolkit Filtered Textbox

This plugin will restrict the input of a textbox, it may be used to allow only numeric input.

JQuery:

http://www.texotela.co.uk/code/jquery/numeric/

 


 

ASP.NET Control Toolkit List Search

The implementation of the JQuery control is a little bit different to the ASP.NET Ajax control, but it may still be useful.

JQuery:

image

http://rikrikrik.com/jquery/quicksearch/#examples  or  http://ejohn.org/blog/jquery-livesearch/

 


 

ASP.NET Control Toolkit Masked Edit

Another control that prevents certain input from being entered, this control allows for a mask to be displayed to help the user.

JQuery:

image

http://digitalbush.com/projects/masked-input-plugin/

 


 

ASP.NET Control Toolkit Modal Popup

A plugin that helps create modal experiences.

JQuery:

image

http://famspam.com/facebox or http://www.ericmmartin.com/simplemodal/ or  http://jquery.com/demo/thickbox/

 


 

ASP.NET Control Toolkit Slider

Create a winforms like slider.

JQuery:

image

http://docs.jquery.com/UI/Slider

 


 

ASP.NET Control Toolkit Mutually Exclusive CheckBox

Not so much a plugin, but sample code to show the concept.

JQueryhttp://blog.schuager.com/2008/09/mutually-exclusive-checkboxes-with.html

 

 


 

ASP.NET Control Toolkit Numeric up / down

A textbox control that has buttons to increment or decrement the number, much like the numeric spin button in winforms.

JQuery:

image

http://plugins.jquery.com/project/spin-button

 


 

ASP.NET Control Toolkit Password strength

A control that will help users pick a strong password.

JQuery:

image

http://plugins.jquery.com/project/pstrength or http://phiras.wordpress.com/2007/04/08/password-strength-meter-a-jquery-plugin/

 


 

ASP.NET Control Toolkit Rating

The star rating control is flexible enough to work on down level browsers.

JQuery:

image

http://www.fyneworks.com/jquery/star-rating/#

 

 


 

ASP.NET Control Toolkit Resizable Control

Turns any DOM element into a resizable control, the user can expand the element by dragging the corner to make the control the desired size.

JQuery:

image

http://docs.jquery.com/UI/Resizables

 


 

ASP.NET Control Toolkit Rounded Corners

Use JQuery to create rounded corners without using images (if your browser doesn’t have an extension to create them).

JQuery:

image

http://plugins.jquery.com/project/corners

 


 

ASP.NET Control Toolkit Slide Show

A number of Slide Show and image carousel plugins are around, I’ve picked a couple below:

JQuery:

image

http://malsup.com/jquery/cycle/  or http://www.gmarwaha.com/jquery/jcarousellite/

 


 

ASP.NET Control Toolkit Tabs

JQuery:

The JQuery tab plugin is very powerful, it allows you to keep tight control over the page HTML

image

http://docs.jquery.com/UI/Tabs

 


 

ASP.NET Control Toolkit Textbox Watermark

A watermark control is simply a textbox with either an image or text inside that disappears when the user clicks inside the textbox.

JQuery:

image

http://plugins.jquery.com/project/jWatermark

 


 

ASP.NET Control Toolkit Validator Callout

JQuery:

An apples for apples equivalent can be found below

image 

http://www.carnovsky.net/samples/jquery_callout_plugin.htm 

Or a more complete and extensible validation plugin (which rivals the ASP.NET validation framework) :

image

http://jquery.bassistance.de/validate/demo/

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Categories:   .Net
Actions:   E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed

Andreessen on Charlie Rose: “I Am Creating A Fund.” (Full Video)

Saturday, 21 February 2009 21:49 by tunnel

Marc Andreessen appeared on Charlie Rose last night. (The entire interview is embedded above). He gave Rose a primer on everything from Facebook and cloud computing to the mobile Web. But he also tells Rose: “I’m creating a fund.” Actually, Andreessen is creating it with his investing partner Ben Horowitz, and it will formalize the angel investing he has been doing on his own for the past several years. It will be called Andreessen Horowitz. From the transcript:

Charlie Rose:
Why are you doing this?

Marc Andreessen:
Because of the nature and the scale of the opportunities. We’re actually been investing ourselves with our own money for three years and we’ve invested in 36 — he and I invested together in 36 deals in three years so about one a month.

Charlie Rose:
Yeah, but I’ve read that you think that the normal investment for you to make, this may have been prefund, what, was about 100,000 to 200,000?

Marc Andreessen:
That’s right, and we’re actually going to preserve and extend that model in the fund. So historically we’ve only invested up to $200,000 total in a deal. We’re going to definitely bring that up in the fund because we’re going to raise more money, be able to put more money in. But it’ll be pretty typical for us to do a $500,000 investment or maybe down to 200,000 or maybe up to a million in a deal to start. And what we’re seeing is a whole generation of startups that actually don’t need very much money to get started, so the cloud computing example, or a mobile application, an iPhone developer doesn’t need very much money to get started.

Andreessen, who sits on Facebook’s board, also says that Facebook could be generating $1 billion in revenues today if it wanted to, and thinks the New York Times should go all digital.

Marc Andreessen:
There’s a lot of confusion out there. Facebook is deliberately not taking a lot of the kind of normal brand advertising that a lot of Web sites will take. So you go to — a company like Yahoo which is another fantastic business and they’ve got these you know banner ads and brand ads all over the place, Facebook has made a strategic decision to not take a lot of that business in favor of building its own sort of more organic business model and it’s still in the process of doing that and if they crack the code on that which I think that we will, then I think it will be very successful and will be very large. The fallback position is to just take normal advertising. And if Facebook just turned on the spigot for normal advertising today, it’d be doing over a billion dollars in revenue. So it’s much more a matter of long term strategy. Companies —

Charlie Rose: 
So if you want to make a lot of money instantly, you could.

Marc Andreessen: 
Yeah, oh, very easily. It could sell out the homepage and it would start making just a gigantic amount of money.

The full transcript is below.


Transcript

 

The Charlie Rose Show Session Two

Guest:
Marc Andreessen

Charlie Rose:
Marc Andreessen is here. He is one of Silicon Valley’s most respected entrepreneurs. He has already founded and sold two companies, each for over a billion dollars. The first was Netscape. It revolutionized web browsing before it was sold to AOL in 1999. His second company, Opsware, was bought by Hewlett Packard.

Charlie Rose:
Mark Andreessen is here. He’s one of Silicon Valley’s most respected entrepreneurs. He’s already founded and sold two companies, each for over a billion dollars. The first was Netescape. It revolutionized web browsing before it was sold to AOL in 1999. His second company, Opsware, was bought by Hewlett Packard in 2007. He has two new ventures, the social networking site, Ning, and a brand new venture capital fund. We want to talk about all of that. I am pleased to have him back on this show. Welcome.

Marc Andreessen:
Thank you.

Charlie Rose:
First just let me talk about something that has — you own 1.6 percent of it. It is Facebook.

Marc Andreessen:
Oh actually I own less than that.

Charlie Rose:
Did you? Oh, no —

Marc Andreessen:
Fortunate enough to be on the Board.

Charlie Rose:
Okay, fair enough, if you’re on the Board, I mean, why did I read that it was 1.6 percent? Somebody then —

Marc Andreessen:
Somebody’s giving me a —

Charlie Rose:
You can’t believe what you read.

Marc Andreessen:
– credit I don’t deserve.

Charlie Rose:
All right, because they said that you had invested at the same time $260 million, is that right or wrong?

Marc Andreessen:
No, no.

Charlie Rose:
None of my business.

Marc Andreessen:
No, I joined the Board later on.

Charlie Rose:
Okay, all right.

Marc Andreessen:
Yeah, last year.

Charlie Rose:
There is this sort of silly idea, but you want to speak to it, that Facebook is the next Google and Google is the next Microsoft. You’ve heard of that. Does any of it resonate with you?

Marc Andreessen:
I don’t think there are nexts, like so for example there was IBM and then people said here’s the next IBM and there never was the next IBM. I don’t think — Google’s a totally different business than Microsoft.

Charlie Rose:
IBM was not the next IBM.

Marc Andreessen:
IBM was not the next IBM. Microsoft wasn’t the next IBM. Google — Google’s its own company, it’s a fantastic company, it’s its own company with its own model. Facebook is a fantastically successful company with a huge amount of potential. Google is you know just a gigantically successful business you know I think for anybody to voluntarily step up and compare themselves to that I think would be hubris, I think that would be a bit much in general. But Facebook’s got huge potential and frankly I think it deserves to be evaluated on its own.

Charlie Rose:
Well, it is evaluated at $15 billion?

Marc Andreessen:
Well, there was an investment round at $15 billion evaluation which was for preferred stock.

Charlie Rose:
Which was the Microsoft investment?

Marc Andreessen:
Microsoft investment and some other investors. People are getting confused on that by the way because that’s preferred stock and there was an internal assessment, a valuation [spelled phonetically] that people have lots of rumors about that was lower than that which was for common stock. So people are getting the preferred and common confused. And of course this is all abstract, right, because the company’s private. You know someday the company will you know at some point —

Charlie Rose:
And because the company’s not making any money.

Marc Andreessen:
Well, company’s financials likely are private so it gets to keep that to itself but company’s [inaudible] —
[talking simultaneously]

Charlie Rose:
But you’re on the Board of Directors —
[talking simultaneously]

Marc Andreessen:
I am on the Board.

Charlie Rose:
– you can be here and tell us.

Marc Andreessen:
I know. Company’s doing very well. On its internal goals it’s doing very well. It’s passed 175 million active users. Half of those users use it every day. A lot of those users use it 50 times a day. It’s generating I think a substantial amount of revenue. I think it can be doing a lot more revenue in the years to come.

Charlie Rose:
Have you read this story? Fortune has marked on the cover how Facebook has taken over our lives then but is it a real business?

Marc Andreessen:
Yeah, sure. So I think people ask us about new companies all the time. They —

Charlie Rose:
They monetize it.

Marc Andreessen:
Yeah, [unintelligible] they monetize it. But look it’s got 175 million active users. It’s the sixth most populated country in the world right now if you compare it to countries. It’s on its way to 500 million users. I mean, it’s going to be a multibillion dollar success.

Charlie Rose:
So what’s going to be the trick to monetize it?

Marc Andreessen:
Oh, okay, so and this is where people are getting confused, is Facebook is deliberately, and this is actually very interesting.

Charlie Rose:
There’s a lot of confusion out there.

Marc Andreessen:
There’s a lot of confusion out there. Facebook is deliberately not taking a lot of the kind of normal brand advertising that a lot of Web sites will take. So you go to — a company like Yahoo which is another fantastic business and they’ve got these you know banner ads and brand ads all over the place, Facebook has made a strategic decision to not take a lot of that business in favor of building its own sort of more organic business model and it’s still in the process of doing that and if they crack the code on that which I think that we will, then I think it will be very successful and will be very large. The fallback position is to just take normal advertising. And if Facebook just turned on the spigot for normal advertising today, it’d be doing over a billion dollars in revenue. So it’s much more a matter of long term strategy. Companies —

Charlie Rose:
So if you want to make a lot of money instantly, you could.

Marc Andreessen:
Yeah, oh, very easily. It could sell out the homepage and it would start making just a gigantic amount of money. Yeah and so there’s just tremendous potential and it’s just a question exactly how they choose to exploit it. What’s significant about that is that Marc is very determined to build a long term company. And you know there’s as you know there are people in the Valley who like quick hits and like sell companies quickly and then there are people, Andy Grove for example, or Bill Gates, and I think in his own way now, Marc, and obviously the Google guys are other examples of this, who want to build a long term business. And so he’s got his eyes way out on the horizon.

Charlie Rose:
So when one others may have sold out to larger media companies —

Marc Andreessen:
Yeah.

Charlie Rose:
Mark insisted he would remain independent and develop his own company in his own way.

Marc Andreessen:
Yeah. And he had those turning parts presented to him. Any successful company in the valley gets acquisition offers and has to decide whether or not to take them. And he’s passed on some very lucrative offers and has a very big vision.

Charlie Rose:
Tell me what the big vision is.

Marc Andreessen:
So the big vision basically is — I mean the way I would articulate it is connect everybody on the planet, right? So I mean 175 million people —

Charlie Rose:
If you don’t think large, what the hell —

Marc Andreessen:
Exactly. 175 million people — 175 million people on the thing now. Adding a huge number of users every day. 6 billion people on the planet. Probably 3 billion of them with modern electricity and maybe telephones. So maybe the total addressable market today is 3 billion people. 175 million to 3 billion is a big challenge. A big opportunity.

Charlie Rose:
Let me remind you that you’re in the business of social networking.

Marc Andreessen:
Of course.

Charlie Rose:
That’s what your Ning is all about.

Marc Andreessen:
Of course, my own company Ning is about to cross 20 million users, and we’re adding 2 million users a month. We’re — and Ning is actually a business that lets you create your own social network, and we’re about to cross a million social networks on Ning that are —

Charlie Rose:
So you want to create a social network with your high school chums, then you can do that.

Marc Andreessen:
You can do that. And there is over a million of those. It’s easy, it’s free. Advertising — there is all kinds of ways. We make money on that, and that’s growing very fast. MySpace is doing very well for News Corps. LinkedIn is another company I’m an angel [?] investor in, you know, got north of 20 million resumes on it now. Everybody uses LinkedIn now to look for jobs and recruit. Which is a very hot topic these days.

Charlie Rose:
I would assume so. So social networking is hear to stay.

Marc Andreessen:
Oh, yeah.

Charlie Rose:
And it’s potential is just beginning.

Marc Andreessen:
Yeah.

Charlie Rose:
If you can connect everybody, then you have a huge opportunity to do a bunch of stuff.

Marc Andreessen:
Here’s the thing. If you can get 50 people or 100 or 150 million people to do something, then over time, you’re going to be able to get everybody to do it.

Charlie Rose:
Low politics —

Marc Andreessen:
Everything. Everybody. So there is huge potential, huge upside.

Charlie Rose:
The Obama campaign —

Marc Andreessen:
Yeah.

Charlie Rose:
Revolutionized politics, didn’t it?

Marc Andreessen:
Excellent example. The Obama campaign by far, like the most aggressive state of the art uses social networking approaches, right, and philosophies. Now, primarily, that was harnessed in the form of fund raising. Right? It was an engine to be able to generate just gigantic numbers of campaign contributions. So every new campaign is going to use these technologies and these approaches. We have a lot of politicians creating networks on Ning. There will be a whole new wave of social networking in politics, right? And also the Obama campaign was very good for volunteer coordination over this. But there is a whole aspect of this for getting the message out in how the campaign gets covered and how the debates happen and how communication happens, which has yet to come. And that will be in ‘12 or ‘16.

Charlie Rose:
And in fact, I think Obama now speaks — rather than using the radio program, speaks online.

Marc Andreessen:
On YouTube. Right. He puts the video on YouTube and then that spreads out all over the web. In politics that’s amazing. In the rest of the world, that’s how things work today.

Charlie Rose:
Does YouTube make money?

Marc Andreessen:
Google — I mean — I don’t know specifically. That’s a Google thing.

Charlie Rose:
You know.

Marc Andreessen:
Well, if they don’t –

Charlie Rose:
You know.

Marc Andreessen:
I’ll give you the same answer as I do on Facebook. If they’re not making money today, they easily could. These are all under-monetized, under-monetized assets. Give you an example. Every video on YouTube — Viacom. Viacom is suing YouTube, suing goggle for copyright infringement. It’s 180-degree the wrong strategy.

Charlie Rose:
On the part of Viacom?

Marc Andreessen:
On the part of Viacom to sue YouTube. They should be using YouTube as a distribution channel, right? They should let all the videos go on to YouTube, and then ever time there is a Viacom video on YouTube, there should be a buy button. And you’re driving traffic directly pack to the properties, you’re selling DVD’s, you’re selling music, you’re selling video games, you’re selling all the stuff that Viacom sells. These are the distribution vehicles of all time. These are nirvana. Right? It’s like Napster for the music industry.

Charlie Rose:
I should count my lucky day that all my programs are on YouTube.

Marc Andreessen:
Oh, yeah. Of course. Because you want people to see them.

Charlie Rose:
Right.

Marc Andreessen:
I mean you want people to see them. So you put them out there. Like I say, there should be a buy button. There should be an advertisement.

Charlie Rose:
Right.

Marc Andreessen:
It’s like with Napster with music, right? 20 million people lined up in 1998 and decided they wanted to start using Napster to start listening to music. If there had been a buy the CD but been there, or buy the digital track, it would have been a gigantic source of revenue for the music industry and the music industry would be far healthier today. And so when you get huge numbers of people lining up to do something, in my view, you figure out how to take advantage of that.

Charlie Rose:
In my view, you have a market.

Marc Andreessen:
Right. Yeah. A market. You know, magic markets don’t appear –

Charlie Rose:
No, that’s right.

Marc Andreessen:
– all the time, so you take advantage of them.

Charlie Rose:
Okay. So what about this other part of Facebook, taking over our lives? Not so good.

Marc Andreessen:
Well, obviously I don’t think that that’s the case. So everything on Facebook is put on Facebook, or any of these other sites linked in as put on voluntarily. People have a lot of control who gets to see it and who doesn’t.

Charlie Rose:
You don’t deny that, in fact, some employers go first to Facebook and therefore if they see something they may not like, they may not hire somebody?

Marc Andreessen:
Well, yeah, but if I put photos of myself dancing around at a party down here on the wall and then apply for a job with you –

Charlie Rose:
There are photos around?

Marc Andreessen:
Possibly. I would have to check your hallway. Check your entrance. Check your Facebook pages.

Charlie Rose:
Yes, exactly.

Marc Andreessen:
But –

Charlie Rose:
I’m talking with about you.

Marc Andreessen:
For me? I’m sure there is photos. Who knows what kinds of photos are out there on me. But, yeah. I mean people are going to check. People are going to do Google searches. But I’ll tell you, it’s the other way around also; right? You’re an employee, you get to learn a lot more about the company you’re going to go to work for.

Charlie Rose:
So you find out about them, too.

Marc Andreessen:
Sure.

Charlie Rose:
On Facebook?

Marc Andreessen:
On Facebook, on Google –

Charlie Rose:
But there is always this controversy just erupted, which is the idea of who owns the user’s profile?

Marc Andreessen:
Yeah. Yeah. So there was confusion, Facebook put out a new release to their so called terms of service. It was sort of legalese. And it caused a lots of confusion. So Mark has announced that they’re actually pulling those –pulling that off the site, referring to the previous version, and they’re going to write a new document which is in English.

Charlie Rose:
Which says?

Marc Andreessen:
Which says users own their content.

Charlie Rose:
But do they keep it though? Does Facebook keep it, even though users own it?

Marc Andreessen:
Well, there is –

Charlie Rose:
Do they keep it after you sign off? They still keep –

Marc Andreessen:
There is a technical definition of keep, and they be there is actually practical like would it ever get used for anything. And so –

Charlie Rose:
So the answer is they do keep it, but it will never be used for anything?

Marc Andreessen:
No. I’m not saying they do or they don’t. I’m just saying because there is a copy –

Charlie Rose:
You know they do. What are you talking witho about?

Marc Andreessen:
I don’t know there is a lot of reason to keep people’s drunken party photos –

Charlie Rose:
But they do.

Marc Andreessen:
I don’t know. Maybe in some cases there are copies. Maybe there aren’t. If it never gets used for anything –

Charlie Rose:
Why don’t they erase it all?

Marc Andreessen:
Why doesn’t Google erase everything in the cache once websites disappear.

Charlie Rose:
I don’t know. That’s a good idea.

Marc Andreessen:
Well, in general, you try to –

Charlie Rose:
That’s a good idea.

Marc Andreessen:
You try to clean it up. Well, you don’t always know what’s active and what’s not. You don’t know when a user is going to come back. You don’t know –

Charlie Rose:
Oh, you being one of the technology geniuses don’t know?

Marc Andreessen:
I’ll tell you what. If a website dropped offline and Google immediately cut it out of their index, everybody would complain because it will just mean if a website just crashed for five minutes, it’s gone –

Charlie Rose:
Yeah, right. Right. So what’s the answer to all this?

Marc Andreessen:
Well, the answer to this is there is, I think, always a middle ground. You have to be very respectful of privacy. You have to provide a lot of controls to let people decide. Have sliders, and let people decide how they want to set it.

Charlie Rose:
Okay.

Marc Andreessen:
Give people the tools.

Charlie Rose:
Back to Ning. How many networks do I want to belong to? There is Linkedin, there is Facebook, there is — on and on and on and on.

Marc Andreessen:
I would say how many things do you care about in your life?

Charlie Rose:
Oh, man.

Marc Andreessen:
How many things are you into?

Charlie Rose:
I don’t want to belong to that many social networks.

Marc Andreessen:
But I mean that’s where it’s going. You’re going to be interconnected. You’re going to be interconnected into a web –

Charlie Rose:
Of tennis players, of whatever in your –

Marc Andreessen:
Exactly. People you grew up with, people — you know, shared –

Charlie Rose:
How many do you belong to?

Marc Andreessen:
Oh, dozens.

Charlie Rose:
Dozens. What kind are they? Tell me what they are?

Marc Andreessen:
There are all kinds of things. For music, I like crime fiction, I like –

Charlie Rose:
Just — slow down. Did you create this on Ning, this crime fiction?

Marc Andreessen:
No, no, no. In that case somebody else created it, and so –

Charlie Rose:
And I joined it.

Marc Andreessen:
I’m watching it.

Charlie Rose:
Have you created any of them yourself?

Marc Andreessen:
Well, I’ve created networks — I haven’t created anybody that [inaudible] scale.

Charlie Rose:
[laughter]. [talking simultaneously]

Marc Andreessen:
I haven’t created any that I would tell your audience about.

Charlie Rose:
10 or 11 or –

Marc Andreessen:
Exactly. Exactly. Small. But we use them all. One of the nice things is we see all the new networks being created, so we sign up for a lot of them ourselves.

Charlie Rose:
When we interview people like you, we always have to ask this question. What is the hottest idea there and what’s the next big idea?

Marc Andreessen:
Yeah. Well, so I mean I think — maybe this goes off track from your question, but I think the hottest idea is innovation is actually alive and well. I mean there are more — I know. But look, there are a lot of people who are arguing the other side of that.

Charlie Rose:
That innovation is dead?

Marc Andreessen:
Oh, there is a lot of people — I mean a lot of people I have been hearing or reading. There is a lot of, you know — well, I mean –

Charlie Rose:
Saying what?

Marc Andreessen:
Innovation is dead or these things can’t be turned into businesses. One or the other.

Charlie Rose:
That’s not innovation. They got this great thing but they can’t monetize it.

Marc Andreessen:
There is even some very successful people out in Silicon valley who are arguing that innovation is dead.

Charlie Rose:
Like whom?

Marc Andreessen:
Two very good friends of mine, Andy Grove and Judy Estron [spelled phonetically].

Charlie Rose:
That’s true. They are saying — you’re right, you’re right.

Marc Andreessen:
There are actually people saying that. So what I’m actually seeing is an endless series of new ideas. We can name all kinds of — cloud computing is a fantastic new idea. It’s –

Charlie Rose:
That’s not a new idea. It’s been out there for –

Marc Andreessen:
Well, I started a company called Loud Cloud in 1999 –

Charlie Rose:
I know you did.

Marc Andreessen:
– which —

Charlie Rose:
10 years ago —

Marc Andreessen:
People didn’t know what we were talking about. But now, it’s a big deal. I mean it’s a legitimate —

Charlie Rose:
It’s been around for a while.

Marc Andreessen:
But at scale, as a big thing — let me tell you what’s happening. So Amazon has this so-called cloud service. And so companies instead of needing their own servers, they can just upload their software code into the Amazon cloud and it will actually return their application or their site on Amazon servers. So you’ve got a whole generation of startups that are basically just a couple of programmers with a couple laptops, and they upload everything into the Amazon cloud. It’s pay by the drink like utility. So all of a sudden, you have this whole new wave of Internet startups getting started for practically no money, right? So there is a level of innovation. Every kid coming out of Harvard, every kid coming out of school now thinks he can be the next Mark Zuckerberg, and with these new technologies like cloud computing, he actually has a shot.

Charlie Rose:
There are more opportunities today than there have ever been.

Marc Andreessen:
Oh, yeah.

Charlie Rose:
Because of all the different kinds of things that are possible?

Marc Andreessen:
Yeah. It’s a cascading. It’s a layering effect. Every layer of new technology makes another layer of innovation —

Charlie Rose:
Exactly.

Marc Andreessen:
– possible on top, and that just keeps roll.

Charlie Rose:
All right. Let’s talk about mobile for a second, because you’ve said some interesting things about that, cell phones and mobile. There was a big meeting, I guess, over in Spain, Barcelona or somewhere —

Marc Andreessen:
Yep.

Charlie Rose:
– right? Did you go to that?

Marc Andreessen:
No, I didn’t.
I read about it online.

Charlie Rose:
So did I.

Marc Andreessen:
There we go.

Charlie Rose:
So tell me about it. What came out of that, and so — what can we say about where we are and where we’re going in terms of mobile? And later, this whole idea of another company you have called Quick or something.

Marc Andreessen:
Qik —

Charlie Rose:
Okay So take off.

Marc Andreessen:
So the big thing is mobile has arrived. So you have these technology friends that people talked about, and talked about, and talked about, and talked about, and talked about, and they never quite happen. And then all of a sudden, they happen. And they’re a big deal. The Internet was like that. The Internet took off in ‘94, ‘95. The Internet had much getting built for 25 years up to that point. But it took off in ‘95.

Charlie Rose:
It took off because of you in part, because of the browser?

Marc Andreessen:
Because the technology got right. The technology of the browser. But the browser became possible because the windows interface, the windows and Macintosh user interfaces became mainstream. So the technology comes together, and all of a sudden the market takes off. So in mobile, you’ve now got the 3G networks.

Charlie Rose:
Right.

Marc Andreessen:
You’ve got really super sophisticated handsets. You’ve got application developers, you’ve got content, you’ve got all this stuff, and it’s just catalyzed, and it’s just gone boom. And so here in the US, we see it with the iPhone.

Charlie Rose:
Right.

Marc Andreessen:
Right? And now the iPhone is a template that every other technology vendor is going to copy, right, or base ideas off of.

Charlie Rose:
Explain that.

Marc Andreessen:
Right. So the iPhone is the first true cell phone that is actually a full computer.

Charlie Rose:
Right.

Marc Andreessen:
It has a full operating system. It has the ability to support a large number of applications. It has a software development kit that you can use to build applications. It has a way to distribute applications over the network onto the phone.

Charlie Rose:
It’s a whole business. It’s a new venture, in fact, for people to provide applications for the iPhone.

Marc Andreessen:
Exactly.

Charlie Rose:
It’s a big venture capital business.

Marc Andreessen:
Yeah. And in fact, actually, there’s thousands of iPhone applications. But –

Charlie Rose:
Exactly.

Marc Andreessen:
– [unintelligible] in the last 12 months.

Charlie Rose:
Exactly.

Marc Andreessen:
And some of them are free, and some of them you charge money for.

Charlie Rose:
Right.

Marc Andreessen:
And there’s just enormous diversity of application. So whether you’re a doctor, and you’re reviewing X-rays on the thing, or whether you’re a caterer listening to music, or whether you’re sending — you know, you’re on the FaceBook application or you’re on a Ning application, it can do anything. So it’s a full general purpose computer. And that’s the first time that somebody has actually delivered that product with a fast — with relatively fast AT & T 3G network.

Charlie Rose:
What was so different about the iPhone that made it sort of a game changer?

Marc Andreessen:
I would say two things. One is, it’s the first real operating system. And I say that’s a sort of — sounds like it’s a technical concept. But it’s the first operating system that really makes a lot of applications possible. And there’s a whole bunch of technical details for that, but it’s a real [unintelligible]

Charlie Rose:
A big system within a phone.

Marc Andreessen:
It’s actually unism. It’s actually the same operating system –

Charlie Rose:
Right.

Marc Andreessen:
– that runs banks and airlines.

Charlie Rose:
Right.

Marc Andreessen:
Just shrunk down to run in the phone. And that’s part of the brilliance of what Apple did is it’s a real operating system. And then also, they packaged the whole thing together, including the tool kits to build the applications and then the way to actually distribute the applications onto the phone. And that had never been done before. So you could have bought a Microsoft phone or a Rim phone or whatever, and they just — they never had it quite put together right so somebody could build an application, distribute it, sell it and get it down to [unintelligible].

Charlie Rose:
In fact, you have said that iPhones are the demarcation point between operating systems. And the other problem we had is that from were so many different standards.

Marc Andreessen:
Right, right, of course.

Charlie Rose:
In America, unlike Europe, and so they got a — and Japan, they had a huge –

Marc Andreessen:
Yeah.

Charlie Rose:
[unintelligible] Asia, not Korea.

Marc Andreessen:
For building proprietary systems, they had a big advantage because there was a single network.

Charlie Rose:
Right.

Marc Andreessen:
Basically a single kind of network. Now in the US, the networks have also consolidated down.

Charlie Rose:
Right.

Marc Andreessen:
So there’s a much smaller number of networks. But now the iPhone is a point, sort of a central point whereas a developer, you can rely on the iPhone being a stable platform for development. And so a lot of developers are doing that. And then the other significant thing is now that the iPhone is successful, it paves the way, much like the MacIntosh paved the way for Windows PCs.

Charlie Rose:
Right, right, right.

Marc Andreessen:
It paves the way for another set of companies, whether it’s Microsoft or Rim or, you know, dozens of others who are startups to create new devices.

Charlie Rose:
By the way, you are one of the people who really do — and I think that this is enormous, to give credit to Bill Gates for developing an operating system that was the standard.

Marc Andreessen:
Yes.

Charlie Rose:
And things happened because of that.

Marc Andreessen:
That’s a big deal.

Charlie Rose:
You know.

Marc Andreessen:
That’s a very big deal. And it’s a very serious commitment for a company. Apple’s had this commitment, Microsoft’s had this commitment. You have to commit — it’s actually a commitment to what’s called backward compatibility. See, if you have to commit to never break anything. So you load up Windows Vista, and you can still run the original Visical [spelled phonetically] from 30 years ago, which was the original killer app on the PC, original spreadsheet. And so that is a long-term institutional commitment that takes a very serious company to be able to do. And then the opportunities, I mean, Netscape was an application that got built on top of that kind of platform. The Macintosh is that, the iPhone is that. And it’s sort of a responsibility for the next set of vendors to do the same thing.

Charlie Rose:
I just read I think this week where Microsoft has an operating system that they’re — a mobile operating system that they’re now going to work with LG and a whole new phone. I mean, other people will be doing that.

Marc Andreessen:
Well, they’re doing a rethink.

Charlie Rose:
Trying to create new operating — what?

Marc Andreessen:
They’re doing a rethink. They’ve had a mobile strategy for years, right, and they’ve had a mobile, Windows Mobile. They’re doing a rethink of it because they’ve seen the iPhone, right? So the iPhone is like –

Charlie Rose:
They’re doing a rethink because they saw Google, too.

Marc Andreessen:
Well, and also — another good reason to do a rethink. The iPhone is liked beam from the future, right? The iPhone, when it landed was like beamed in from five years in the future. And so it has — it itself is fantastic, and it has inspired a level of creative thinking around it that we’re going to see the results from over the next two, three, four years. And there’s lots and lots — I mean Samsung obviously is very serious about this, Nokia is very serious about this. You know, and then there’s a lot of software developers. Ning is very serious about providing the software for this. FaceBook is as well. And Google is as well. And so there’s going to be just a tremendous amount of innovation, and then actually a lot of people using it. It’s going to be a real thing.

Charlie Rose:
What is this idea you have for what is it called Qik?

Marc Andreessen:
Qik, yeah.

Charlie Rose:
Qik, is that way you can do live streaming wherever you are?

Marc Andreessen:
Any cell phone with a camera.

Charlie Rose:
Yeah.

Marc Andreessen:
Can be a source of live streaming video straight onto the internet or onto everybody else’s phones.

Charlie Rose:
All right. Just explain to me the potential of this.

Marc Andreessen:
So basically, 3 billion phones in the world. They all have cameras. 3 billion sources of live streaming video.

Charlie Rose:
Right.

Marc Andreessen:
Anybody, at any time can pull out of their pocket and can start streaming video live. They could be at a political protest.

Charlie Rose:
Right.

Marc Andreessen:
They could be at a — you know –

Charlie Rose:
So we can go live anywhere in the world now –

Marc Andreessen:
– bank robbery.

Charlie Rose:
– at anyplace.

Marc Andreessen:
You could be doing an interview.

Charlie Rose:
Right.

Marc Andreessen:
And it goes live. And of course, it goes live which is a big deal, but it also gets recorded, and so it can be streamed. It can be played back later. And so it streams up onto the web. You can embed these videos into your blog –

Charlie Rose:
And what’s the quality of this –

Marc Andreessen:
– your YouTube video.
[talking simultaneously]

Charlie Rose:
–video?

Marc Andreessen:
Well, it depends, there are phones actually that actually don’t have camcorder functions yet and so it actually stitches together a video stream out of individual frames, which is a neat trick by itself. And then now there are cell phones coming out — there are cell phones coming out now that have high def camcorders built in. And so you’re going to have in a couple years it’s going to be fairly common to have a little phone and it’s going to have high def camcorder and it’s going to be streaming high def video over either 3G or the new 4G networks straight onto the Web.

Charlie Rose:
And you know what they’re going to do? They’re going to be able to inject these little devices inside us you know a live stream what’s happening in our body so they’ll tell us exactly how everything is functioning.

Marc Andreessen:
I can’t wait.

Charlie Rose:
I can’t either. No, I’m serious.

Marc Andreessen:
[unintelligible] for healthcare?

Charlie Rose:
Technology is changing medicine more than any other particular thing that I know of or it has the potential to change more than anything else.

Marc Andreessen:
It really should.

Charlie Rose:
I mean imaging and the rest. Imaging is like just the beginning of the potential and you’ve seen it now with the brain in extraordinary ways.

Marc Andreessen:
Yep. Absolutely.

Charlie Rose:
All right, so is this thing working now, this [unintelligible] thing?

Marc Andreessen:
Yep, yeah, this works, so you download it, you install it, you use it, you stream it, people are –

Charlie Rose:
How much does it cost?

Marc Andreessen:
Well, you know they’re working on that.

Charlie Rose:
You’re so evasive.

Marc Andreessen:
They’re working on that. There’s a bunch of you know there’s a bunch of –
[talking simultaneously]

Charlie Rose:
Your reputation is being very candid and outspoken –

Marc Andreessen:
They’re working on that.

Charlie Rose:
Everything is you’re working on it, I can’t tell you.

Marc Andreessen:
They’re working on it.

Charlie Rose:
All right.

Marc Andreessen:
So the thing with these things is that actually makes sense, people actually laugh about this, but it actually makes sense, if you can get the scale, you can figure out a way to build a business around it.

Charlie Rose:
Of course.

Marc Andreessen:
If you can’t get it to scale, it doesn’t matter how many creative ideas, you have to build a business. And so you raise venture capital. You get it to scale and then you build a business around it.

Charlie Rose:
Let’s talk about venture capital. You’re starting a new fund.

Marc Andreessen:
I am starting a — for the first time in my life –

Charlie Rose:
You and — for the first time?

Marc Andreessen:
I’m crossing over into the dark side. I’ve been an entrepreneur three times. I started three companies.

Charlie Rose:
Yeah, and I mean that was — you’ve been the guy who’s out looking for venture capital.

Marc Andreessen:
I’ve always been the guy raising money.

Charlie Rose:
Yeah, and so now you’ve got a bunch of money and you have a partnership or a fund and you’re raising money from all your friends.

Marc Andreessen:
I’m creating a fund. I actually — it’s a friend of mine, friend of mine is a long term colleague, Ben Horowitz and I, who have worked together for 15 years, he and I are going to –
[talking simultaneously]

Charlie Rose:
So what’s your history with him because I’ve read of it?

Marc Andreessen:
Oh, he was one of our first guys at Netscape.

Charlie Rose:
That’s what I thought, right.

Marc Andreessen:
So he was one of our key product leaders at Netscape and he’s just coming off of a job at Hewlett Packard. We sold our second company to HP and he was running 3,000 people there and was very successful. So he and I are going to start it. And it’s going to be sort of a — it’s going to invest in a lot of early stage — lot of companies like the ones we’re talking about. And you know our claim to fame is we’ve actually you know by entrepreneurs for entrepreneurs, we’ve done it, we’ve been on that side of the table for a long time, we know what it’s like.

Charlie Rose:
Why are you doing this?

Marc Andreessen:
Because of the nature and the scale of the opportunities. We’re actually been investing ourselves with our own money for three years and we’ve invested in 36 — he and I invested together in 36 deals in three years so about one a month.

Charlie Rose:
Yeah, but I’ve read that you think that the normal investment for you to make, this may have been prefund, what, was about 100,000 to 200,000?

Marc Andreessen:
Yeah, we –
[talking simultaneously]

Charlie Rose:
You’d have to make a lot of small investments.

Marc Andreessen:
Right.

Charlie Rose:
So that if anything goes bad or there’s no –

Marc Andreessen:
That’s right, and we’re actually going to preserve and extend that model in the fund. So historically we’ve only invested up to $200,000 total in a deal. We’re going to definitely bring that up in the fund because we’re going to raise more money, be able to put more money in. But it’ll be pretty typical for us to do a $500,000 investment or maybe down to 200,000 or maybe up to a million in a deal to start. And what we’re seeing is a whole generation of startups that actually don’t need very much money to get started, so the cloud computing example, or a mobile application, an iPhone developer doesn’t need very much money to get started.

Charlie Rose:
What’s not very much money?

Marc Andreessen:
Very much money might be anywhere from 200,000 to say a million and a half.

Charlie Rose:
Really?

Marc Andreessen:
Right.

Charlie Rose:
To get started to –

Marc Andreessen:
To basically to prove that the product can work, right? To basically give you something that you can use, right? And then based on that you then often go raise a traditional venture capital route.

Charlie Rose:
I heard the other day a story of someone who went out to prove a product that did not exist online to see if there was a market –

Marc Andreessen:
Mm-hmm, oh, right exactly actually that’s — I think it’s the same guy, it’s the guy we’ve actually invested in.

Charlie Rose:
Right.

Marc Andreessen:
Who actually is raising money himself for his own company now.

Charlie Rose:
Right.

Marc Andreessen:
From a venture capitalist.

Charlie Rose:
Right.

Marc Andreessen:
Very close to getting that deal done. And so he had this very clever idea which was you can actually launch — he used Google Ad Words, right? So he was buying little ads on Google. He said the great thing with Google Ad Words is you put up an ad and people click and then even if there’s nothing on the other side they didn’t know that and so you can actually test how often they click and so you can test what the response rate is and so the really, really smart marketers are doing this now, you run Google Ad Words campaigns, or the equivalent thing on other systems, and you check the response rate for different words, different value propositions, different markets, different nationalities, different languages, and you see the response rates. And you don’t even have to [unintelligible], you don’t have to have the product. And you basically build the product after the fact and you back into –

Charlie Rose:
So if there’s enough support for the product, then you go make it, right?

Marc Andreessen:
But what I’ve heard is in the old days really smart book authors used to put classified ads like in literary journals and say you know new book you know poetry for sale, $30, and then they would you know if they got like 500 orders they would actually write the book.

Charlie Rose:
Oh, yes, yeah.

Marc Andreessen:
And if they didn’t, they’d return the money. And so you can just basically do a much more sophisticated version of that online. And so this guy, Andrew Chen [spelled phonetically], is the guy I’m thinking of.

Charlie Rose:
Yeah, what’s his idea?

Marc Andreessen:
So it’s a new kind of — you’re going to hate this — it’s a new — it’s undisclosed — it’s a new kind of viral consumer internet service, by viral, meaning it’s going to — it’s a service like a Facebook or a Twitter that spreads from user to user on its own steam, where he has a –
[talking simultaneously]

Charlie Rose:
Why am I going to hate this?

Marc Andreessen:
Because I’m not going to tell you what the idea is.

Charlie Rose:
[unintelligible]

Marc Andreessen:
Or I’m also not going to tell you how he’s going to make money. But he’s still –

Charlie Rose:
Or how much money he’s made or whatever.

Marc Andreessen:
Or how much money he’s made. He’s getting started. But it’s this approach. He stakes this analytical marketing approach and runs the ad campaign before the product exists.

Charlie Rose:
Tell me about Twitter.

Marc Andreessen:
Twitter.

Charlie Rose:
You’re invested in that, too?

Marc Andreessen:
Yeah. Exactly. That’s the kind of company — I’m an angel investor in that, and that’s the kind of company — that’s exactly the kind of thing that we want to do in the funds. So —

Charlie Rose:
Are they making any money?

Marc Andreessen:
Not yet. Not yet. Actually Twitter — I believe Twitter’s current revenue may actually be zero.

Charlie Rose:
Yes, exactly. Explain what Twitter is and why everybody is talking about it.

Marc Andreessen:
So Twitter is a new kind of messaging system, or sort of a combination of an SMS sort of short messages, a little bit like blogging. So basically, people can post either from their PC key board or from their cell phone. They can post these short updates. And it actually limits the updates to 140 characters.

Charlie Rose:
Right.

Marc Andreessen:
And when you go to the Twitter home page, it just has a simple question which says what are you doing? And then you type in 140 characters, and it says that. And you been subscribe on Twitter to people you’re following. And they could be people who are friends of yours, or people who don’t know who have public feeds. So for example, you could have a feed on Twitter, if you don’t already, that has a notification of the guests on each show and a link to the video.

Charlie Rose:
Right.

Marc Andreessen:
And the thing is growing like wild fire —

Charlie Rose:
I know it is. It’s just amazing.

Marc Andreessen:
Exactly. So it percolated along for about a year, and then it took. The last two or three months, it’s growing vertically. And so — and the uses are nearly infinite. It can be used for news, like you can — there is a whole API —

Charlie Rose:
As long as you can keep it within 140 characters, you got —

Marc Andreessen:
Yeah. But 140 characters, you can headline and link to a news article. You can do a headline and a link to a video. You can do a notification — the other thing is like real time reporting —

Charlie Rose:
You can do a synopses and a link to a website?

Marc Andreessen:
Link to a website. A link to a Qik video. Exactly. You can do all these things. And you can search on it, right. So you can see what’s happening in real time. So the next time there is a, you know, next time a plane lands in the Hudson, this actually happened with the plane that landed in the Hudson, all these people are doing Twitter. Is there are actually people on the plane with their cell phones doing Twitter updates saying, well, I’m hoping they get the rafts deployed. Oh, good, they got the rafts deployed.

Charlie Rose:
Water coming in the plane, what do I do now?

Marc Andreessen:
Exactly. And so it’s basically — it’s sort of — think about it as sort of a real time electronic nervous system for lots and lots of sort messages to be accept all over the planet for all kinds of people to all kinds of other people for all kinds of uses.

Charlie Rose:
So when did you become an angel for this?

Marc Andreessen:
When it first got started.

Charlie Rose:
Really? Why? Tell me the process in your little mind that made you think that this was a big deal.

Marc Andreessen:
Okay, so two things. One is the entrepreneurial I’m a huge fan of. So the entrepreneur is a guy by the name of Evan Williams. He created blogger, which is one of the big blogging services.

Charlie Rose:
Right.

Marc Andreessen:
He created a company called Odeo. This is a good example of what’s happening. He created a company called Odeo for podcasting. He raised 3 1/2 million dollars. Turns out the idea didn’t work. He did something revolutionary. He gave the money back. He went back to the investors, he made them whole, he gave the money back. He had this little side project —

Charlie Rose:
He’ll earn a reputation right there.

Marc Andreessen:
Yeah. Exactly. He actually made up the difference out of his own pocket and gave the money back. He had a side project that spun out Twitter that he and another guy named Jack Dorsey were working on as a sort of a side project, which was Twitter. It started to take off. So they said, you know what? It’s that, not this. Shut that down, return the money. This. Raise new money for it. All the investors who were in the first company were delighted to come into the second company because he had the reputation for being somebody who either wins or treats you fairly. And then, you know — for those of us in the industry just looking at the dynamics of how he put Twitter together, it was pretty obvious that it was going to work at all, it was going to be viral and it could get big. So, you know, he placed the bet early, relatively small amount of money. I don’t know what he raised in the first round, a couple million dollars or something.

Charlie Rose:
When did you appreciate the idea of [unintelligible] viral?

Marc Andreessen:
Oh, viral? I don’t know. Probably — I would say probably post Netscape. We saw it with Netscape a lot, but we didn’t really have the terminology to describe it. But I would say especially PayPal and the PayPal guys who are friends of mine have been very, I think, advanced thinkers on that topic. And especially in 2000, 2001, 2002.

Charlie Rose:
I think Peter is on the board of Facebook.

Marc Andreessen:
Peter Till [spelled phonetically] is on the board of Facebook with me. And so he is — he’s just — they’ve developed a very sort of rigorous way of thinking about this concept, and so I’ve learned from that, and been involved in much of these businesses.

Charlie Rose:
Here is what I have never understood, I want you to explain to me at this mom. Microsoft decides that Netscape has a good idea. We’d like to be in that business.

Marc Andreessen:
Sure, yep.

Charlie Rose:
They go to the University of Illinois where they have the code.

Marc Andreessen:
Yes.

Charlie Rose:
Which you —

Marc Andreessen:
Wrote.

Charlie Rose:
– wrote. You wrote the codes.

Marc Andreessen:
Yeah.

Charlie Rose:
University of Illinois insisted on keeping the code that you —

Marc Andreessen:
We didn’t take it with us.

Charlie Rose:
Was that a voluntary choice by you?

Marc Andreessen:
Oh, yeah, that was voluntary.

Charlie Rose:
So you could have taken it with you, but you didn’t.

Marc Andreessen:
We knew it was no good.

Charlie Rose:
Wait a minute. Let me finish the story. So they had it and so Microsoft went and bought the code.

Marc Andreessen:
Mm-hmm.

Charlie Rose:
From the University of Illinois, right?

Marc Andreessen:
Actually indirectly.

Charlie Rose:
Okay. They got it.

Marc Andreessen:
Illinois licensed it to a startup company which then licensed it the Microsoft, and then was surprised when Microsoft decided to actually do something with it.

Charlie Rose:
And what they did was created Explorer?

Marc Andreessen:
Yes.

Charlie Rose:
Right?

Marc Andreessen:
Which is why I now take credit for both, Firefox —

Charlie Rose:
[laughter]

Marc Andreessen:
– and Internet Explorer.

Charlie Rose:
And Mosaic became —

Marc Andreessen:
Mosaic —

Charlie Rose:
Became Firefox.

Marc Andreessen:
No, Mosaic became IE.

Charlie Rose:
IE, right.

Marc Andreessen:
Netscape became Firefox.

Charlie Rose:
Right. Right. Right. That’s right. Because AOL and then —

Marc Andreessen:
As a matter of fact, if you go to the about page on IE, if you go to about IE up in the menu there, you’ll actually see down at the very bottom, developed at the University of Illinois.

Charlie Rose:
Amazing.

Marc Andreessen:
Actual center for computing applications.

Charlie Rose:
You’re a big guy.

Marc Andreessen:
I take credit for that. Exactly.

Charlie Rose:
All right. Let me talk about where this — this whole thing in the world is going in terms of Facebook. Newspapers.

Marc Andreessen:
Yep.
I’ve heard of them.

Charlie Rose:
What is it between you and the New York Times?

Marc Andreessen:
You want to know what really pushed me over the edge?

Charlie Rose:
What?

Marc Andreessen:
Judy Miller.

Charlie Rose:
Really?

Marc Andreessen:
Just —

Charlie Rose:
Explain who Judy Miller is.

Marc Andreessen:
Technology. She’s the national security reporter who covered the run up to the Iraq war and the WMD topic. And I just — I took —

Charlie Rose:
She was wrong on the question of WMD and people thought her sources —

Marc Andreessen:
Completely, completely incorrect. And I would normally cut somebody slack for something like that, but then the folks at Knight Ridder at the time, Knight Ridder, now McClatchy got it completely correct.

Charlie Rose:
Right, they did.

Marc Andreessen:
So I actually got to know a couple of those folks, and I asked them like what was the difference, how did you get it right? They said, oh, we talked to the colonels. The Times had access to all the generals and all the politicians. We talked to the colonels. We talked to the guys that were actually in the field doing the work. They said, we don’t see any of this. We don’t understand what these guys are talking about in Washington. We don’t see any of it. So they said to us was totally obvious. So like at that point –

Charlie Rose:
At that point what?

Marc Andreessen:
At that point, I didn’t know this at the time, like a lot of people, so I read the Times, and I said, hey, you know, war with Iraq, great idea. Right? Existential threat, weapons of mass destruction. He wants to kill us. We have to go kill him first. So, okay. I’ll give somebody one shot at that but not two.

Charlie Rose:
And then?

Marc Andreessen:
And then –

Charlie Rose:
That happening turned you against the New York Times because you created a thing called New York Times death watch.

Marc Andreessen:
In fairness, I’ve actually totally dropped that. I think at this point it’s become unfair.

Charlie Rose:
To the New York Times?

Marc Andreessen:
Well, because –

Charlie Rose:
Your sense of fairness overwhelms me.

Marc Andreessen:
I know. Things — events are playing out.

Charlie Rose:
So you’ve got the New York Times death watch is no longer there.

Marc Andreessen:
That was a blog post that I did. A blog post that I did that I was kind of — it was a little bit tongue in cheek and a little bit serious. But with an underlying point.

Charlie Rose:
Here is where you go — what’s the under underlying point?

Marc Andreessen:
Well, the underlying point is fundamentally, there is a structural change happening in that business, so –

Charlie Rose:
In the newspaper business.

Marc Andreessen:
In the newspaper business. Well, in the entire media business. In all branches of the media industry, but the newspapers are sort of front and center topical. And the reason I bring up Judy Miller is because the typical — there are exceptions to this. There are friends of mine who are trying very hard to grapple with this. But the typical sort of newspaper industry response is, you know, we just got to figure out a way to kind of gut through it, like if we can — if we can get through the advertising recession, if we can downsize the paper, if we can downsize the news room –

Charlie Rose:
I don’t think that’s what their idea is, but go ahead.
[NE] .

Marc Andreessen:
Start returning ads on the front page, if we can just figure out some kind of combination of things, then we can keep printing the paper and delivering it as a physical medium, and this Internet thing will kind off stay off to the side.

Charlie Rose:
No, I think that’s not true. I think they’re trying to survive until the Internet thing pays off. That’s how they’re doing it.

Marc Andreessen:
But this is — this is playing offense versus playing defense. Their revenue today is still, in most cases, 90 percent print.

Charlie Rose:
Right.

Marc Andreessen:
10% online.

Charlie Rose:
Right.

Marc Andreessen:
That means they spend 90 — I can tell you. I have been involved with a lot of companies, right? Ninety percent — if 90 percent of your revenue is coming from something, 90 percent of your time is being spent on that. So they’re spending 90 percent of their time –

Charlie Rose:
And the future 10 percent –

Marc Andreessen:
Future 10 percent, and spending very little time playing offense. For the most part, they’re Internet divisions have been off to the side, often with different news rooms. I mean just like bizarre separation.

Charlie Rose:
So to play offense for a newspaper for you means what?

Marc Andreessen:
Oh, you got to kill the print edition.

Charlie Rose:
You would stop the presses tomorrow?

Marc Andreessen:
You have to kill it.

Charlie Rose:
Stop the presses tomorrow.

Marc Andreessen:
You have to kill it.

Charlie Rose:
Stop the presses tomorrow.

Marc Andreessen:
Stop the presses tomorrow. I’ll tell you what. The stocks would go up. Look at what’s happened to the stocks. This investors are through this. The investors are through the transition. You talk to any smart investor who controls any amount of money, he will tell you that the game is up. Like it’s completely over. And so the investors have completely written off the print operations. There is no value in these stock prices attributable to print anymore at all. It’s gone.

Charlie Rose:
So you would recommend to the owners of the New York Times, stop printing papers.

Marc Andreessen:
Yeah, absolutely. You have to. You have to –

Charlie Rose:
And take your losses –

Marc Andreessen:
Yeah. You have to.

Charlie Rose:
Like a courageous person.

Marc Andreessen:
Chronic pain? Acute pain. How many years — music industry, same thing. How many years of chronic pain do you want to take to avoid taking a year of acute pain?

Charlie Rose:
Right.

Marc Andreessen:
And by the way, the acute pain would be acute. Like this is a big deal. I’m not saying that this –

Charlie Rose:
[talking simultaneously] revenues have gone away, then you’ve got a problem.

Marc Andreessen:
You’ve got a problem. But you have to build for the future. I mean if you’re — if you’re the guy delivering ice to people’s ice boxes, at a certain point, you better go into the refrigerator repair business or you’re going to have an issue. If you’re the village blacksmith and a model T comes along, you better become a mechanic. People’s lives are better when they get news online versus having to wait for the morning paper. It’s a lot more efficient, a lot more real time, a lot less waste. It’s actually — like everything about the airline experience is better. And at some point, you have to — I believe, as a responsible manager, reorient –

Charlie Rose:
Do you read anything on paper?

Marc Andreessen:
Well –

Charlie Rose:
Anything.

Marc Andreessen:
I’m weird. I read everything. So I subscribe — I’m a huge consumer of media.

Charlie Rose:
You’re just like me. I go online. I get it — I touch it, I want this, I want this.

Marc Andreessen:
I tell my friends, I own 6,000 CD’s, like music CD’s. Like I buy CD’s all the time. I love CD’s.

Charlie Rose:
I do too, yes.

Marc Andreessen:
All they need are another million people like me.

Charlie Rose:
I know. I know.

Marc Andreessen:
And there aren’t enough of me. And, you know, DVD’s –

Charlie Rose:
I buy DVD’s, too. I thought I was the only one. I kept beating myself up because I thought there is no one like me, an how stupid. I’m just stupid.

Marc Andreessen:
Exactly. I have a huge collection of DVD’s, and it’s essentially –

Charlie Rose:
Exactly.

Marc Andreessen:
I got on [talking simultaneously]

Charlie Rose:
This is no reason to buy DVD’s?

Marc Andreessen:
So DVD sales are collapsing. DVD sales are caving in. So yeah. We need more of me and you.

Charlie Rose:
All right. Exactly.

Marc Andreessen:
We’re all set.

Charlie Rose:
We’d have a –
[talking simultaneously]

Charlie Rose:
All right. So looking back over the last 15 years.

Marc Andreessen:
Yeah.

Charlie Rose:
All right, what’s been the biggest surprise for you?

Marc Andreessen:
Oh, well, so the biggest surprise, by far is that, you know, we started out this internet thing looked like an academic experiment at first and turned into something a bit — you know, a billion and a half people are using today, and it’s changed everybody’s lives. And I don’t think — there’s no way on earth that we ever anticipated that. And I don’t think there’s any way that you could. I think you would have to be a megalomaniac –

Charlie Rose:
Okay. So the power of the internet and the range of the internet and the impact on everything.

Marc Andreessen:
Yeah, impact on everything. It worked. It actually worked. It actually played out. And so — and it played out through commerce, it’s playing out through media, playing out in politics.

Charlie Rose:
What are the constraints of the internet? I mean, what –

Marc Andreessen:
Oh, boy. Excuse me. I — you know.

Charlie Rose:
Can it get too big or something like that.

Marc Andreessen:
No, no, no. It’s just going to keep getting bigger. It’s actually a so-called network effect, right? So the more people who use is, the more people — the more reason there is to put new things on the internet, right? And it just keeps going. And so every day, think about what’s happening. And old friend of mine used to call this. It’s the magic box. Every day that you’re on the internet, there’s something new to do that you’re going to enjoy or you’re going to like or it’s going to be relevant to you, right? Every day. And that’s going to be true from now for the next 50 years, hundred years, I mean until some, you know, far point in the future when we’re all up in space or something. Every day it gets better and better and better and better and better. Every day, as a consequence, right, it eats different industries.

Charlie Rose:
Right.

Marc Andreessen:
It colonizes and then takes over different industries.

Charlie Rose:
Right. Apple [unintelligible] mentioned newspaper industry.

Marc Andreessen:
Newspaper industry or, you know, I — you know, banking. There’s financial services. There’s all kinds of things happening in all of these different sectors, photography, obviously, that are being sort of taken over by the internet, being pulled into the internet, being made eight part of the experience. And it just keeps growing. And observationally, people love it. People love using the internet, you know? And especially, you know, a kid these days. Any kid these days lives on their laptop. You know, their laptops are –

Charlie Rose:
Is that good?

Marc Andreessen:
It’s fantastic.

Charlie Rose:
Now, wait, wait. Is it good?

Marc Andreessen:
Yeah. It’s –

Charlie Rose:
You see no downside to that?

Marc Andreessen:
Okay. I grew up –

Charlie Rose:
Living on your internet.

Marc Andreessen:
I grew up in rural Wisconsin.

Charlie Rose:
[unintelligible]. Yes.

Marc Andreessen:
I grew up in rural Wisconsin, okay? No access to information relating to rest of the world except for whatever was in the public library, right, for which I could probably thank Andrew Carnegie or somebody like that way back when.

Charlie Rose:
Right.

Marc Andreessen:
But like no connection to current events, no connection to the idea that you can start your own business. No connection to new technology. No connection to anything. I mean, you know. So you take every kid living in a rural community in the US, you take every kid living in the inner city, you take every kid growing up in the developing world, and you give them access to the world, they will be so much better educated. They’ll be so much more aware.

Charlie Rose:
I couldn’t agree more.
[talking simultaneously]

Charlie Rose:
But there is a downside. There is — it may be tiny.

Marc Andreessen:
Okay.

Charlie Rose:
It may be tiny.

Marc Andreessen:
Yeah.

Charlie Rose:
There’s something valuable about what’s going on right here. You and I having a conversation, that’s important. It would not be the same conversation if you were in the next room, and we were doing it with a keyboard, I promise you.

Marc Andreessen:
Yes, but I’m here today because your producer emailed me.

Charlie Rose:
Oh, that’s true.

Marc Andreessen:
And if she had tried to call me, I don’t know whether I would have picked up the phone. And if she had — and if she had had to travel by horse –

Charlie Rose:
Yeah, I know.

Marc Andreessen:
– to talk to me –

Charlie Rose:
Don’t minimize the human value.

Marc Andreessen:
Oh, yeah.

Charlie Rose:
Of personal contact.

Marc Andreessen:
Yeah, yeah, it’s great.

Charlie Rose:
I don’t want you to do that. But I think the –

Charlie Rose:
If you learn nothing else here, learn that.

Marc Andreessen:
I think the internet is sort of an overlay on top of — on top of –

Charlie Rose:
Let me tell you a small story. The other day, this was like a week ago. I am in a car riding from Miami to Marcos Island to do a thing on biotech. In the middle of the everglades, I take out my computer, on battery now, operating on battery.

Marc Andreessen:
Right.

Charlie Rose:
It’s a two-hour and a half trip. I take my little thing and put it in there so, you know, I can access the internet. I am then on a cell phone talking to someone in New York City, and I’m looking at the BBC and the New York Times just to catch up on the news.

Marc Andreessen:
Right.

Charlie Rose:
I’m saying, how good is this. If you are a news junkie –

Marc Andreessen:
Yep.

Charlie Rose:
– an information connoisseur –

Marc Andreessen:
Yep.

Charlie Rose:
– this is heaven.

Marc Andreessen:
Yeah.

Charlie Rose:
This is heaven.

Marc Andreessen:
Yep, right.

Charlie Rose:
All right. Let me do this finally. People you admire the most. Just list these people in terms of what they have contributed, okay? Just list them for me. Who’s first, who’s second, who’s third and fourth. This is easy. Okay. Marc Andreessen, Bill Gates, Steve Jobs, Sergey Brin and Larry Page, Andy Grove.

Marc Andreessen:
I agree.

Charlie Rose:
No, you agree what? Who is the most important?

Marc Andreessen:
Who is the most important out of those?

Charlie Rose:
Yes.

Marc Andreessen:
If you had to pick one I think you’d — if you had to pick — I mean, if you can’t do the ranking, it’s impossible. If you had to pick one, probably Andy Grove.

Charlie Rose:
Really?

Marc Andreessen:
Because the microprocessor, it –

Charlie Rose:
Fueled. It was the brains behind it.

Marc Andreessen:
The silicone needed to exist for the software to be created. And everything that we’ve been able to do in the valley and on the internet, it’s all been based on that. And so, you know, Andy, all right, is a good friend of both of ours. But you know, going back to everything from his origin story through to when they started Intel in the late ’60s, you know, and then they built that company, that company is now a 40-year-old company, and it’s just as vital a 40-year-old company, and it’s just as vital and vibrant as the [unintelligible] and he ran it for you know a good part of that history, most of it.

Charlie Rose:
What a great man, I know.

Marc Andreessen:
Yeah. And like that technology changed the world. And that was hard. I mean that was difficult I mean –
[talking simultaneously]

Charlie Rose:
Well, he took the risk you talked about.

Marc Andreessen:
Yeah.

Charlie Rose:
I mean, here’s a guy who –

Marc Andreessen:
Well, here’s a good example, right?

Charlie Rose:
Take the story, tell us. Tell us the story.

Marc Andreessen:
Right, so Intel’s main business from like 1969 until the mid-’80s was memory chips, so chips going in computers, store data. Microprocessors were kind of a side business. And then in ‘82 IBM released the IBM PC and then the Intel microprocessor. And then the microprocessor business started to take off. But in 1985 there was this big crash in the PC market and there was just generally the tech industry had been expanding and then just all the sudden started to crash. And the PC wasn’t quite right yet for mainstream adoption, bunch of other things were going on and the Japanese were — that was when the Japanese were just a unbelievably powerful economic force. And Japanese electronics companies were creating memory chips in huge scale, subsidized by the Japanese government, and they were just under pricing Intel on every market and they were basically in the process of crushing Intel out of business. And Andy and his partner, I believe at the time Gordon Moore, famously –

Charlie Rose:
You believe was a partner?

Marc Andreessen:
Well, no, I mean –
[talking simultaneously]

Charlie Rose:
[inaudible] was Gordon Moore.

Marc Andreessen:
No, it was definitely Gordon Moore. [unintelligible] at all to that point, but I think that — or maybe I’m wrong, maybe it was –
[talking simultaneously]

Charlie Rose:
– three of them –

Marc Andreessen:
– three of them, but –

Charlie Rose:
I just thought you doubted that Gordon Moore [inaudible].
[talking simultaneously]

Marc Andreessen:
No, no, no, no, definitely Andy and Gordon so you know they famously essentially killed their main business in order to get out from under the overhang of having –

Charlie Rose:
That plan was killing –

Marc Andreessen:
That plan was killing –

Charlie Rose:
– big revenue stream.

Marc Andreessen:
Yeah, provide a huge revenue stream, it was some huge percentage of the revenue, you know, well more than half. And they bet the company on the microprocessor at a time when that was not an obvious bet to make because the PC was still very new and unproven as a mass market thing. And you know then the rest of the story’s obvious. Intel became gigantically successful. But you know that’s like a 16-year-old company which in the technology industry right like dog years, 16 years is like a seven-year-old company in the rest of the economy.

Charlie Rose:
[inaudible] the nature of this business with great — I love Andy Grove and I have great respect for Intel, but Nvidia came along with graphic computing, you know with a new [unintelligible] –

Marc Andreessen:
Yep.

Charlie Rose:
You know, now they’re fighting.

Marc Andreessen:
You want to know the irony of that?

Charlie Rose:
Yes.

Marc Andreessen:
The core engineers at Nvidia are the core engineers from Silicon Graphic.

Charlie Rose:
Which is your old — which is Jim Clark?

Marc Andreessen:
My partner, Jim Clark, sold first. Silicon Graphics was a fantastically successful computer company in the late ’80s and early ’90s that actually got put out of business by the PC. The engineers got freed up as a consequence of SGI being put out of business by the PC, went to work in among other things are now companies like Nvidia and ETI that make these graphics chips and pose a significant challenge to Intel. And so the cycle repeats. And the key thing happening there is innovation happened right? And in that case right somebody benefited, somebody got damaged. But the process of damaging right at that point, Silicon Graphics, was a tragedy as far as Silicon Graphics was concerned, but it freed up those brilliant engineers to go on and create the next generation of technology. And a big part of what makes the Valley so vital is that these engineers can actually recycle multiple times through different companies in different ways. And a lot of the best engineers out at Google for example are people who actually were in the previous wave or even the wave before that of technology. And it’s that level of sort of you know turnover in dynamism and spinoffs and startups in venture capital that keeps the whole thing going.

Charlie Rose:
Assess Google for me. I mean, well go ahead I mean it may be obvious but go ahead.

Marc Andreessen:
Yeah, fantastic company, great business.

Charlie Rose:
What have they done right? A, what is it they have done right in terms of taking a good idea and managing it shrewdly?

Marc Andreessen:
So I’d say two things –

Charlie Rose:
And then using the advantage to get into all kind of other business including cell phones and everything else.

Marc Andreessen:
Yeah, exactly. So two things, so one is there were a lot of search engines before Google, there were probably 35 different venture-backed search engines before Google. My friend, Bill Joy, has this term he uses where he says, sometimes products have the “it works” feature and as compared to all the other products that actually don’t really work and our industry sometimes produces those products, the Google search engine was the first one that it worked, it really worked, when you did a search on it you got what you expected to see and that was actually not true of the ones before it. So they really nailed the core technology, and you know these are you know Ph.D. students in computer science at Stanford, these were hardcore technologists building this. Then they built the service and by the way you know it was not obvious at the beginning how they were going to make money on it. In fact, there was an early –
[talking simultaneously]

Charlie Rose:
– [inaudible] not advertising.

Marc Andreessen:
Well, at the beginning they didn’t think that advertising was viable because it turned out advertising had actually not been very effective on the previous generation of search engines because nobody wanted to advertise against bad search results. So it turns out when you have good search results it turns out they were able to develop and Overture with another company that Yahoo later bought that you know sort of the idea crystallized. I think Overture might have originally invented it and then Google picked it up and refined it and adapted it, but this idea that you could target a text keyword [unintelligible] and see search results. And so once they unlocked that, a friend of mine from Netscape, [unintelligible], became the head of sales. It’s one of the guys who helped them figure that out. Once they unlocked that then they unlocked a magic business right? And about once every 10 years in tech you just see a magic business and a magic business is one where the market turns out it’s just infinite, it’s just gigantic, and so Cisco was the magic business. Intel was a magic business, Microsoft was magic business. Amazon increasingly looks like it’s a magic business. When you have a magic business, you go for size. And you go for scale. And they’ve just done a fantastic job of scaling that thing up and having it be gigantic and having it generate huge amounts of cash.

Charlie Rose:
Which raises another topic. Amazon, first of all. I mean at the time of the last bubble bursting, that was 2001, was it?

Marc Andreessen:
Yeah, right.

Charlie Rose:
You should know.

Marc Andreessen:
Oh, yes. That was 2001. Took my second company public in 2001.

Charlie Rose:
Exactly.

Marc Andreessen:
Which I would not recommend.

Charlie Rose:
I had smart people saying to me — and I’ve known Jeff Basos [spelled phonetically] for a long time.

Marc Andreessen:
Yep.

Charlie Rose:
Smart people saying to me they’re not going to make it.

Marc Andreessen:
Oh, yeah. People had written him off.

Charlie Rose:
They’re not going to make it.

Marc Andreessen:
Absolutely. He remembers that, by the way.

Charlie Rose:
I know he does.

Marc Andreessen:
He has not forgotten. I saw people — I was at conferences where I saw very sophisticated investors walking out of his presentation in that era just shaking their head.

Charlie Rose:
Yeah.

Marc Andreessen:
They thought he was crazy. And he was absolutely correct. Here is where it really made — Andy Grove. He had the fortitude and the foresight to stick with it and stick with it and stick with it, and, you know, he pursued his core long term vision. He did not give up. He ran the company himself, pretty much continuously through that whole period. I think so he had a CEO for a brief period of time. But then he came back in, and he’s run the company himself all the way –

Charlie Rose:
Right.

Marc Andreessen:
– the brilliant founder. And he stuck with it. And along the way, he tried lots of different ideas. Some of them didn’t work. He got criticized for them, and then a lot of them, it turns out, worked really well. Now the thing is just a monster.

Charlie Rose:
So Kindle represents what?

Marc Andreessen:
Oh, Kindle is gigantic. I mean it’s several things. It’s a huge business for Amazon. It’s the — it’s representative of the future of publishing.

Charlie Rose:
Do you know how many books the new one — I’m sure you’re getting the new one like I am.

Marc Andreessen:
Yeah.

Charlie Rose:
1500 — 1,500 books, and it’s smaller than the Kindle 1st. I.

Marc Andreessen:
Yeah.

Charlie Rose:
And you can get your newspapers and your magazines.

Marc Andreessen:
Yep.

Charlie Rose:
And you can do all kinds of other things. I don’t know even know yet, because they’re not shipping them until February 24.

Marc Andreessen:
Yep. Yep. Everything. And, you know, by the way, the Kindle is a new form factor, right? So you’ve got the iPhone with sort of the three or four inch screen. You’ve got the laptop or now the net book with a 12 or 14-inch screen. Now you’ve got the Kindle with a sort of 7-inch screen. And so there is going to be a whole market, I believe, for these sort of web pads that are going to be sort of 7-inch screens. The Kindle is one. You can actually buy — there is a bunch of these on the market, but none of them have taken off. The Kindle has.

Charlie Rose:
The Kindle took off because?

Marc Andreessen:
Well –

Charlie Rose:
Cell phone connection, one.

Marc Andreessen:
Well, cell phone connection. They nailed that. Provision. Content. You can buy the book, it’s super light. It uses this electronic ink technology so it’s easy on the eyes. Battery lasts –

Charlie Rose:
And they try to make it feel like a book as much as they could.

Marc Andreessen:
It’s great.

Charlie Rose:
Is the idea of a book, experience of a book.

Marc Andreessen:
Exactly. Right. It’s look like the iPhone. They packaged the whole thing together. But there will be — again, it points to the future. There will be a generation of these kind of pads. And so like let’s suppose some day Apple might make a — think about the iPhone, scale it up so it has a 7-inch screen. Like think about how great that would be.

Charlie Rose:
Do you think they will?

Marc Andreessen:
I think –

Charlie Rose:
Of course they will.

Marc Andreessen:
Put it this way. I will be the first person to buy one.

Charlie Rose:
Of course. I will, too. There any doubt that they’ll do that?

Marc Andreessen:
I don’t know. I mean –

Charlie Rose:
Why do you say I don’t know?

Marc Andreessen:
Until they announce it, I don’t know. I don’t know. I don’t know. That’s a very — they’re a very private company. I don’t know. But somebody will figure it outout.

Charlie Rose:
No kidding.

Marc Andreessen:
Somebody will figure it out. I mean the Kindle books and magazines and newspapers, but that form factor and that shape of device and that weight in a couple years is going to be video, going to be music, going to be doing video conferencing, it’s going to be doing telephony, it’s going to be doing web browsing. It’s going to be doing everything. Right? And so that’s the next — one of the fascinating things is that’s the next screen size and the next device I think that’s going to happen.

Charlie Rose:
Thank God I’m only 26. [laughter]

Marc Andreessen:
You have a lot of this to look forward to.

Charlie Rose:
Exactly. There is this also, which I don’t know anything about. This shows you how really stupid I am. Games.

Marc Andreessen:
Yeah.

Charlie Rose:
You have said — and other people have said, take all the old media, all the people that used to go to old media are spending all their time now — whatever time they used to spend on old media, or whatever — however, you mark a person’s life depended on media, is now going online or to games.

Marc Andreessen:
That’s right.

Charlie Rose:
Do you go to games?

Marc Andreessen:
Oh, yeah, yeah, yeah. My XBox and I have a very close personal relationship. We spend a lot of quality time together.

Charlie Rose:
Do you really? Do you hug and kiss her and everything else?

Marc Andreessen:
Oh, yeah. She’s a very good friend. I take very good care of her.

Charlie Rose:
So why?

Marc Andreessen:
Oh, it’s just tremendously stimulating.

Charlie Rose:
Stimulating?

Marc Andreessen:
It’s a core human experience. Especially dopamine.

Charlie Rose:
Is it really?

Marc Andreessen:
Mm-hmm.

Charlie Rose:
But explain that to me. I’m not doubting you. I’m just asking.

Marc Andreessen:
It’s like playing sports, but it’s for everybody.

Charlie Rose:
Tell me — if you tell me it’s like playing sports, I get it.

Marc Andreessen:
It actually is. It’s competitive. It gets your adrenalin up. It’s a lot of fun. And by the way, all of the new games –

Charlie Rose:
Not a lot of exercise though, is it?

Marc Andreessen:
Well, the Wii.

Charlie Rose:
Tell about the Wii.

Marc Andreessen:
The Wii.

Charlie Rose:
I know about the Wii.

Marc Andreessen:
Innovation, right? Innovation. Nintendo, fantastic company. Like Japan needs 100 times more Nintendos. The rest of the world, we need 100 times more Nintendos. I think they’re a company absolutely to be admired.

Charlie Rose:
People don’t know how well they have done against Play Station –

Marc Andreessen:
Phenomenal.

Charlie Rose:
And XBox, Do T do they?

Marc Andreessen:
People had written them off. People had concluded that they were toast, because the capital cost, the amount of money is that Sony and Microsoft put into the Play Station, the XBox weren’t in Nintendos budget, and Nintendo has outsold them, I don’t know, five to one or something with the Wii. And it’s brilliant. It’s this new motion controller. So it’s this new gizmo and basically, you can play tennis, And you stand in front of the thing and you whack the tennis ball around, or boxing, all these different games.

Charlie Rose:
Then I have to get this.

Marc Andreessen:
It’s fantastic.

Charlie Rose:
You do that?

Marc Andreessen:
Oh, yeah. Yeah.

Charlie Rose:
What’s your favorite game?

Marc Andreessen:
Gears of War 2. I like that. I like the violent games.

Charlie Rose:
Do you really?

Marc Andreessen:
I like the bloody games.

Charlie Rose:
Why am I surprised?

Marc Andreessen:
Oh, yeah. It’s a lot of fun. And you can play multiplayer. And by the way, it’s all going online. That’s all going online also. So a big part of the XBox experience is XBox live. And then games themselves on the Internet now are a very, very big deal and a very big growth business.

Charlie Rose:
What has been the economic crisis impact on Silicon Valley?

Marc Andreessen:
Ah. So in the meltdown of 2000, 2001, 2002, we were the nose on the dog. So we were if not the cause, we were one of the main catalysts for the stock market crash at that point. This time around, we in the valley are the tail of the dog. So we have been affected at least so far out of I think all the sectors in the economy, and I think there is a couple reasons for that. But the big one is because companies in the valley generally don’t run on credit. We generally run on equity financing as opposed to credit financing, so my company has no debt. If somebody doesn’t want to role over our debt, we don’t have any debt to roll over. So we have been effected least. But there is no question that the big recession that has now developed from the credit crisis is going to have a big impact on us.

Charlie Rose:
What’s that impact going to be?

Marc Andreessen:
Sales are going to fall. For a lot of companies, sales are going to fall. For a lot of –

Charlie Rose:
A lot of people will lose their jobs?

Marc Andreessen:
There will be layoffs. There already are layoffs. There will be a lot of people losing their jobs. Our customers — Silicon Valley is dependent on its customer base. So when companies around the world are cutting their budgets, they’re going to buy less networking equipment and databases and everything else. And when consumers don’t have as much discretionary money, they’re not going to be spending money on much of anything, you know. The kind of stuff we sell. So that will have a big impact. I would make a couple of observations, though, based on that. One is, the innovation will continue, so at some point, the economy will recover again, and when that happens, there is going to be a ton of innovation in the next three, four, five — whatever period of time we’re talking about, years, that is going to be essentially bottled up in these companies that are getting funded today. Like with our new fund, if we fund a company today, we’re thinking about a return in seven to 10 years so we can go through three or four or even five years of economic downturn as long as at some point we come out the other end. And the innovation will happen in the meantime. And that’s what happened last time. Google developed through the bust. Facebook developed through the bust. YouTube developed through the bust.

Charlie Rose:
Because they had money and all they needed to do was keep working?

Marc Andreessen:
Exactly. Observation one. Observation two, we will be a sort of tragic beneficiary of the disruption happening in other markets that the Internet and technology industry is poised to colonize. So to the extent that for example, media companies were financial service institutions or whatever, real estate companies, whatever, are being damaged because the crisis, to the extent that the valley is creating the kinds of companies that are going to be in those markets in a big way, we will tend to benefit, because we will tend to be playing offenses rather playing defense. And worrying about, you know, whether we can pay off our debt or whether we can roll our loans over. And so generally speaking, from the valley, you know — and I say it’s a tragic opportunity. You don’t wish this kind of suffering on anybody. But, you know, if TV is in trouble or radio is in trouble, and it runs into a debt crisis or a newspaper is in trouble and can’t keep it going, there are new companies springing up all over the place that are going to be able to take a lot of those roles. Let me bring up one more thing. I think this is what should happen in banking. So Stanford economist, Paul Roever [spelled phonetically] who is a friend of mine, a genius economist, like a potential Nobel Prize winner, wrote an op-ed the other day, and he said, look. Good banks, bad banks, doesn’t matter. What we need are new banks. And I actually think what we need — and I think the valley can play a role in this, I think there should be a new wave of financial institutions that should be created from scratch today. And they should take the role. So instead of trying to unwind some big bank that’s underwater, and hundreds of billion dollars insolvent, let’s create a whole bunch of new ones. And by the way, let’s have them all be new and online. So instead of having all this infrastructure and all these old systems and these ATM’s and all this stuff, let’s do purely online, purely Internet banks. Purely virtual, much lower cost structure.

Charlie Rose:
So you’re saying the federal government should go out and create these new online banks. Take the money that you’re pouring into these old banks and instead pour it into new banks.

Marc Andreessen:
Help them get started.

Charlie Rose:
Banks fail and then —

Marc Andreessen:
Letting banks fail is the systemic risk issue. I don’t feel qualified to address that.

Charlie Rose:
You’re just saying regardless of what you do with the old banks, do this with the new banks.

Marc Andreessen:
Because it’s going to take — even if you can figure out a way to fix the old banks, it’s going to take a long time. I mean it is a very complicated and involved process. They are deeply broken in very fundamental ways. And create a new bank. I mean a bank is a simple concept. You can create a bank in software. As a concept, it’s a simple concept. So if you have a —

Charlie Rose:
You get deposits and you lend them.

Marc Andreessen:
You get deposits and you want money. It’s not that hard. I’ll give you an example of what’s happening. I’m on the board of eBay. eBay just bought a company called Bill Me Later. Bill Me Later is an adjunct to eBay’s PayPal business, which is a very big payment service. Bill Me Later is a service that lets you, when you pay for something with PayPal, it’s an option that lets you get credit for that specific transaction at the particular moment in time when you’re doing the purchase.

Charlie Rose:
Right.

Marc Andreessen:
So instead of being prequalified for a credit line, right, so a bank prequalifies you for a credit card, $5,000 credit limit based on your job today, you lose your job. They don’t figure it out until it’s too late. You try to put a bunch of stuff on your credit card and lose a lot of money for the bank. For bill me later, every transaction is credit scored individually. And so every transaction is scored at the moment it happens, based on all the data that’s in all the networks about all these people. And so it’s a brand-new way to provision credit. It’s completely virtual. It’s a fantastic business. It can go global. It can be gigantic. It can apply to any kind of persons. That’s the kind of new thinking and new approach that innovation can bring. I mean, it could or should be the new source of credit. And so the need to repair an old bank that has this outmoded credit card infrastructure that’s really nod needed any more.

Charlie Rose:
Right.

Marc Andreessen:
It’s not clear to me how many hundreds of billions of dollars of society’s resources we should take to try to keep the past sort of in business when there’s a better way to do things.

Charlie Rose:
Are you impressed with beyond how he used it in the political campaign, whether now President Obama is receptive to technology and who he is reaching out to in technology and science in order to make sure that the country as a nation, you know, maximizes its resources in science and technology and the future?

Marc Andreessen:
Yes. He is very smart on those things. He is very in tune with modern technology, much more so than any president we’ve had so far. Clinton was starting to get there at the end of his tenure, but he never really did get to see much.

Charlie Rose:
Embraced to the 21st Century and all that.

Marc Andreessen:
He was starting to get there. But Obama has actually lived it and actually uses the stuff. I mean, he’s actually — he can actually have –

Charlie Rose:
Really? He’s addicted to his library, is he?

Marc Andreessen:
He’s completely addicted to his library. I mean, you know, to the point where he actually still has one. He actually knows and understands this stuff. And he’s surrounded himself by a whole generation of people who know and understand it.

Charlie Rose:
And some people in Silicon Valley [unintelligible] him.

Marc Andreessen:
Of course there’s submit [unintelligible]
[talking simultaneously]

Charlie Rose:
Yeah, right.

Marc Andreessen:
So there’s no question he gets it. And then more broadly, there’s no question that he understands the role of science and technology and innovation in the economy, like for somebody who actually hasn’t worked in the –

Charlie Rose:
I thought innovation was dead.

Marc Andreessen:
It is completely. Toast. Dead man walking. That’s why I’m here today.

Charlie Rose:
One last quick idea, which is that you think that the people who are the most innovative are young because — well, you said something like this.

Marc Andreessen:
I’m thinking when I was young and foolish, I might have said –

Charlie Rose:
But the idea simply is that they don’t know the limitations.

Marc Andreessen:
Because I’m getting older.

Charlie Rose:
If you have gone through –

Marc Andreessen:
Right.

Charlie Rose:
– a crisis.

Marc Andreessen:
Right.

Charlie Rose:
If you’ve got through a meltdown, if you’ve gone through, you know, a complete collapse as happened in 2001, then you are more frightened, you’re more aware of risk and all of that. So therefore you don’t take as many chances, you know? Because how many people have we heard this explanation, if I had known how hard it was to do this, I wouldn’t have started. But I didn’t know, so I kept going, and eureka, it worked.

Marc Andreessen:
Exactly. With age comes experience, and that’s good and bad.

Charlie Rose:
So do you think you’re less innovative than you have been.

Marc Andreessen:
Well, as I say, I’m revising my opinion on this as I get older. Let me tell you, when I talk to a 24-year-old entrepreneur, and I tell him, you know, Well, this is what happened in 1997, this is what happened in 1999, he says, Well, that’s when I was in junior high.

Charlie Rose:
I know.

Marc Andreessen:
So he is completely like, those guys are completely unscarred by the crash. And it’s fantastic. They’re totally optimistic. They’re great.

Charlie Rose:
That’s the hope of the country.

Marc Andreessen:
Yes.

Charlie Rose:
It really is. Thank you for taking this time to visit us here.

Marc Andreessen:
Sure. My pleasure.

Charlie Rose:
Now, what’s the name of this fund you’ve created?

Marc Andreessen:
Andreessen Horowitz.

Charlie Rose:
Oh, my good.

Marc Andreessen:
It could be a venture capital firm –

Charlie Rose:
How innovative and original that is.

Marc Andreessen:
– or a law firm.

Charlie Rose:
How very creative that was to choose that as the name.

Marc Andreessen:
Exactly.

Charlie Rose:
Couldn’t we do better than that?

Marc Andreessen:
Actually, it abbreviates to A to Z, so we get listed first in the Yellow Pages. We might also have a [unintelligible]. We’re not sure yet.

Charlie Rose:
Marc Andreessen, thank you very much.

Marc Andreessen:
Thank you.

Charlie Rose:
Thank you for joining us. See you next time.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

PHP, ASP or ASP.NET?

Monday, 19 January 2009 15:48 by tunnel
Local tech commentator Daniel Winter looks beyond the hype and FUD slinging to show you where and when to use PHP, ASP and ASP.NET for your web apps.

It is a very frequently asked question and one that tends to rapidly digress into a platform war over the merits of Linux or Windows. This type of argument may actually reflect how difficult it is to perform a side-by-side analysis of competing Web technologies - and this is complicated by the lack of agreement on any comparable operating system baselines.

So rather than adding to this debate, we will attempt to look at the benefits of each technology in terms of its appropriateness to certain Web developing and hosting environments. Although the similarities between ASP and PHP are much closer than a comparison of either to ASP.NET, we will include ASP.NET in the line up as it is often confused with ASP and is intended (by Microsoft) to completely replace it.

The theory - an overview of features

PHP - Hypertext Pre-processor 
PHP is an open source server-side scripting language that is very similar in syntax to C languages. Although originally designed to run under Linux using the Apache Web server, it has been ported to work using virtually every operating system and any standards-compliant Web server software. From this it can be derived three of the primary advantages of PHP. Firstly, it is a cross platform technology and consequently PHP applications can be very portable - depending, of course, upon any additional components they are built to incorporate, such as vendor specific databases etc. This portability incurs an additional benefit by virtue of the fact that most Web hosting providers support PHP, making it fairly easy to change hosts if necessary.

Secondly, because PHP bears so much resemblance to C programming languages, it is very easily picked up by developers familiar with this syntax - one that is shared by Java, JavaScript and Perl, amongst others. Thirdly, being open source, PHP is constantly evolving and, more importantly, bug fixes are being regularly implemented to the core libraries, which are freely available.

In addition to these benefits, there are certain programming requirements that may make PHP an appealing choice for developers. Firstly, there are built-in libraries for the direct creation and manipulation of image and PDF documents. This means, for example, that if an application calls for dynamically-created menu images with anti-aliased text, or the exporting of pages to Acrobat format, PHP may be the ideal technology to do it. Although these features are theoretically available to competing technologies, they usually require the installation of third party custom components to do so.

Another situation that may make PHP the best choice of server scripting is where connecting to either mySQL or Postgres databases is required. Although mySQL and Postgres are available to ASP via an ODBC connection, this usually needs to be configured externally by the system administrator. Fortunately, this limitation has been overcome in ASP.NET, where a mySQL data provider is available for direct database connections akin to that used by MS SQL Server.

ASP - Active Server Pages 
Microsoft introduced ASP with Windows NT Server 4 as the convention for dynamic Web applications running under their IIS Web server. Because it utilised VBScript, which is itself a variation of the Visual Basic language, ASP was immediately accessible to developers familiar with programming in the Microsoft IDE - Visual Studio. While the scripting language has evolved over time, not much has introduced into ASP to bring it into line with competing technologies. Consequently, there is no integrated support for features like image manipulation as found in PHP. The opportunity is there, however, to extend ASP by writing (or installing) third party COM objects in the form of DLL files. These can be written to perform any action the server itself is capable of doing. The down side, of course, is that this involves interaction with the desktop in order to configure these services - a feature not always available to Web developers.

The upside to ASP is that Microsoft servers are almost ubiquitous in the corporate environment. Additionally, MS SQL Server is also very widely used and, not surprisingly, is well supported in ASP. Although virtually any data source can be made available via ODBC, SQL Server and file DSN access is available at the code level.

ASP.NET 
The debate over whether to use ASP or PHP is slowly becoming redundant as .NET builds in momentum. Instead, the predominant argument in years to come will be over whether to use Java or .NET technologies (or both!). The only link between ASP and ASP.NET, really, is that they both use VBScript. Or, in the case of .NET, it can use VBScript - as well as about 20 other languages!

The reason why ASP.NET is in another league to ASP and PHP is that it operates on an entirely different architectural structure. The latter are interpreted scripting languages whereas .NET is a compiled framework. This means, firstly, that Web pages run much, much faster. It also means that source code is safer and more robust. Additionally, ASP.NET introduces a new concept in Web programming - the notion of code-behind pages. With code-behind, each page of HTML is driven by its own compiled programmatical directives. Consequently, the HTML - or presentation layer - is largely separated from the business logic of the application. Although this sort of separation can be achieved in PHP and ASP, it is not an integral part of the technology, as it is in ASP.NET.

Other benefits of ASP.NET are its full-featured integrated support for XML and Web services. There is also a very comprehensive range of security and cryptography libraries available to .NET, making it especially useful for ecommerce and enterprise data applications. On the downside, though, even the experienced programmer can find working with .NET confusing. Irrespective of one's familiarity with the programming language(s) used, the shift in paradigm for the Web developer can be a major stumbling block in ASP.NET. Hosting can also be an issue for ASP.NET applications, as it is not as widely supported by hosting providers as ASP or PHP - and definitely not at competitive rates.

The practice - some language comparisons

Variable Declarations 
In VBScript (used by both ASP and ASP.NET), it is not necessary to declare variables before use - although it is recommended practice to do so. Using the Option Explicit declaration, this can be enforced programmatically. In PHP, variables can be declared, although there is no way to enforce this. Instead, they are automatically declared upon use. The one benefit of PHP variables, though, is that they can be set as references to other variables, rather than just by value - as is the case in VBScript.

<% 
' VBScript Example
Option Explicit
myVar = 1
myOtherVar = myVar
myVar = 2

' myResult will be 3
myResult = myVar + myOtherVar
%>

<?
// PHP Example
$myVar = 1;
'Use the ampersand to make a reference
$myOtherVar = &$myVar; 
$myVar = 2;

// $myResult will be 4
$myResult = $myVar + $myOtherVar;
?>

Variable Collections 
Working with form and query string variables is very similar in both PHP and ASP. There are ways of accessing the collections of form and query string variables by name or as an array. In ASP.NET, however, things are much different - especially for form fields. Instead of searching blindly for submitted form variables, the code-behind page is made explicitly aware of every form field on the HTML page. The value of these fields can be tested upon the execution of any known event. One such event is the "postback" which occurs when a form is submitted by the user. Other events, however, can be client-side and triggered by JavaScript. In ASP.NET, there is no qualitative distinction between the two.

<% 
' ASP Example
myFormVal = request.form("myInputField")
myQSval = request.querystring("myQSitem")
myVal = request.item("myFormOrQSitem")
%>

<?
// PHP 4.1+ Example
$myFormVal = $_POST['myInputField'];
$myQSval = $_REQUEST['myQSitem'];

// PHP 3+ Example
$myFormVal = $HTTP_POST_VARS['myInputField'];

// If register_globals = on
$myVal = $myFormOrQSitem;
?>

<!-- ASP.NET example -->
<html>
<script language="VB" runat=server>
Sub SubmitBtn_Click(Sender As Object, E As EventArgs)
Message.Text = "Hello " & Name.Text 
End Sub
</script>
<body>
<form action="action.aspx" method="post" runat="server">
Name: <asp:textbox id="Name" runat="server"/>
<asp:button text="OK" OnClick="SubmitBtn_Click" 
runat="server"/>
<asp:label id="Message" runat="server"/>
</form>
</body>
</html>

String Concatenation 
PHP seems to take the cake here, as it allows variables to be inserted into strings without the usual concatenation issues. ASP.NET makes the whole process much more convoluted with its StringBuilder class - but it runs much faster as a result!

<?
// PHP Example
$link = mysql_connect("host", "user", "password")or die("mysql_error());
mysql_select_db("database") or die("Could not select database");
$query = "SELECT * FROM Table";
$result = mysql_query($query) or die(mysql_error());

while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
foreach ($line as $col_value) {
//do something
}
}
?>

Connecting to Databases 
When it comes to database connectivity, things are pretty standard for each technology. First of all, in each case a connection to the database is made. In the case of PHP, a database is selected next (this is performed at the connection stage for ASP and ASP.NET). Subsequently a query is constructed and passed to the database which may or may not return a record set.

Because it is more object-oriented in nature, as well as supporting sophisticated error handling, ASP.NET may require significantly more code than either PHP or ASP to perform simple tasks. On the upside, though, far less code is required by ASP.NET for displaying data – especially if the built-in datagrid control is used to automatically construct the HTML output.

<%
'ASP Example
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Driver={SQL Server};Server=MyServerName;" & _
"Database=myDatabaseName;Uid=;Pwd="

const strSQL = "SELECT * FROM Table" Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, objConn
Do While Not objRS.EOF
'do something
objRS.MoveNext
Loop
%>

' ASP.NET Example
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>

<html> 
<script language="VB" runat="server">
Sub Page_Load(Sender As Object, E As EventArgs)
Dim MyConn As SqlConnection = New SqlConnection("server=(local). . . ")
Dim MyComm As SqlCommand = New SqlCommand("select * from Table", MyConn)
MyConn.Open()
Dim dr As SqlDataReader = MyComm.ExecuteReader()
MyDataGrid.DataSource = dr
MyDataGrid.DataBind()
MyConn.Close()
End Sub
</script>
<body>
<ASP:DataGrid id="MyDataGrid" runat="server"
Width="600"
BackColor="#FFFFFF"
BorderColor="#000000"
ShowFooter="false"
CellPadding=2
CellSpacing="0"
Font-Name="Verdana"
Font-Size="8pt"
HeaderStyle-BackColor="#EEEEEE"
EnableViewState="false"
/>
</body>
</html>

 

Conclusion 
The choice of ASP, PHP or ASP.NET will ultimately come down to the requirements of the application, as well as the environment where it is to be hosted. The developer's familiarity with similar programming languages and/or paradigms may also help sway the decision one way or the other. The bottom line is that there is no perfect technology and the individual circumstances will dictate the best option. For example, building a one-page form-mailer application for a Windows server in ASP.NET might be considered overkill, but it's a perfect situation for an ASP page. If a site has to work with a mySQL database on a Linux Apache server, though, you'll be fighting a losing battle to use either ASP or ASP.NET. Half the battle between competing technologies will be won if the individual needs are well ironed-out beforehand.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Way too much information on Control IDs and ASP.NET 4.0 Client Id Enhancements

Thursday, 8 January 2009 19:41 by tunnel

One of the ASP.NET enhancements which first made an appearance in the Visual Studio 2010 PDC CTP release  is the ability to set a client Id which you can be confident will be used when the control renders it’s markup. 
All of the samples in this post will use the following Server Control:

using System.Web.UI;

using System.Web.UI.WebControls;

namespace TestControls

{

    public class NamingPanel : PanelINamingContainer

    { }

}

 

NamingPanel is very simple server control which just enables us to see the effect of ClientId without all the cruft that goes with using a more complex control (e.g, GridView).

How does the Control Id get defined now?

When used with a ‘nested’ NamingPanel, the following markup:

<tc:NamingPanel runat="server" id="rootPanel"> 
    <tc:NamingPanel runat="server" id="childPanel1"> 
    <asp:TextBox ID="TextBox" runat="server" Text="Hello!"></asp:TextBox> 
    </tc:NamingPanel> 
</tc:NamingPanel>

results in this rendered HTML:

 

 

  <div id="Div1">  
       <div id="rootPanel_childPanel1"> 
        <input name="rootPanel$childPanel1$TextBox" type="text" value="Hello!" id="rootPanel_childPanel1_TextBox" /> 
    </div> 
</div>

As you can see the id “TextBox” defined in the original markup gets mangled to  preserve ‘uniqueness’ by including the Ids of it’s parent controls within it’s own id attribute. 
Whilst making the id attribute ‘unique’ does ensure that we can ensure that selecting a specific control client side using the id attribute will result in a single control, it does tend to get a bit verbose; the example above is only 2 levels deep, with more nesting; or even just using a control in  Nested MasterPages can result in hugely long values for the Client Id…

The second major problem with the ‘unique’ Client Ids is that you can’t guarantee that your client Id will remain the same if you move a control from one ‘NamingContainer’ to another.

NOTE: A NamingContainer is a control which either directly or indirectly implements the INamingContainer interface. In essence it defines a ‘NameSpace’ for controls…you’d most commonly implement this interface on Composite Server Controls to ensure that  any of the contained child controls are rendered with the parent ids prefixing their own Ids, ensuring they remain unique within the page.

What happens if you don’t specify an ‘id’ for one of these parent controls in markup? Given the following markup:

<tc:NamingPanel runat="server" id="rootPanel"> 
    <tc:NamingPanel runat="server"> 
    <asp:TextBox ID="TextBox" runat="server" Text="Hello!"></asp:TextBox> 
    </tc:NamingPanel> 
</tc:NamingPanel>

results in this rendered HTML:

<div id="rootPanel"> 
   <div> 
       <input name="rootPanel$ctl00$TextBox" type="text" value="Hello!" id="rootPanel_ctl00_TextBox" /> 
   </div> 
</div>

Taking a look at the id for the TextBox you can see that there’s an odd name inserted in the id attribute “ctl00”, where did this come form? Well, in the System.Web.UI.Control class there’s a declaration as follows (note, this and all other source in the post is from the ASP.NET 2.0 source using Reflector):

  private static readonly string[] automaticIDs = new string[] {

        "ctl00""ctl01""ctl02""ctl03""ctl04""ctl05""ctl06""ctl07""ctl08""ctl09""ctl10""ctl11","ctl12""ctl13""ctl14""ctl15",

        "ctl16""ctl17""ctl18""ctl19""ctl20""ctl21""ctl22""ctl23""ctl24""ctl25""ctl26""ctl27","ctl28""ctl29""ctl30""ctl31",

        "ctl32""ctl33""ctl34""ctl35""ctl36""ctl37""ctl38""ctl39""ctl40""ctl41""ctl42""ctl43","ctl44""ctl45""ctl46""ctl47",

        "ctl48""ctl49""ctl50""ctl51""ctl52""ctl53""ctl54""ctl55""ctl56""ctl57""ctl58""ctl59","ctl60""ctl61""ctl62""ctl63",

        "ctl64""ctl65""ctl66""ctl67""ctl68""ctl69""ctl70""ctl71""ctl72""ctl73""ctl74""ctl75","ctl76""ctl77""ctl78""ctl79",

        "ctl80""ctl81""ctl82""ctl83""ctl84""ctl85""ctl86""ctl87""ctl88""ctl89""ctl90""ctl91","ctl92""ctl93""ctl94""ctl95",

        "ctl96""ctl97""ctl98""ctl99""ctl100""ctl101""ctl102""ctl103""ctl104""ctl105""ctl106","ctl107""ctl108""ctl109""ctl110""ctl111",

        "ctl112""ctl113""ctl114""ctl115""ctl116""ctl117""ctl118""ctl119""ctl120""ctl121","ctl122""ctl123""ctl124""ctl125""ctl126""ctl127"

     };

As you can see this defines an array containing some predefined IDs to be used when no id is specified for a control; again, this retains uniqueness for control names. At runtime the ID for the control is generated by reading the ‘UniqueID’ property of the Control class.

public virtual string UniqueID

    {

        get

        {

            if (this._cachedUniqueID == null)

            {

                Control namingContainer = this.NamingContainer;

                if (namingContainer == null)

                {

                    return this._id;

                }

                if (this._id == null)

                {

                    this.GenerateAutomaticID();

                }

                if (this.Page == namingContainer)

                {

                    this._cachedUniqueID = this._id;

                }

                else

                {

                    string uniqueIDPrefix = namingContainer.GetUniqueIDPrefix();

                    if (uniqueIDPrefix.Length == 0)

                    {

                        return this._id;

                    }

                    this._cachedUniqueID = uniqueIDPrefix + this._id;

                }

            }

            return this._cachedUniqueID;

        }

    }

 

As you can see this code has the following check:

 

    if (this._id == null)

    {

            this.GenerateAutomaticID();

    }

 

Simply, if there’s no id already in existence for the control at render time then one is generated using a call to the following method:

 

 

private void GenerateAutomaticID()

{

    this.flags.Set(0x200000);

    this._namingContainer.EnsureOccasionalFields();

    int index = this._namingContainer._occasionalFields.NamedControlsID++;

    if (this.EnableLegacyRendering)

    {

        this._id = "_ctl" + index.ToString(NumberFormatInfo.InvariantInfo);

    }

    else if (index < 0x80)

    {

        this._id = automaticIDs[index];

    }

    else

    {

        this._id = "ctl" + index.ToString(NumberFormatInfo.InvariantInfo);

    }

    this._namingContainer.DirtyNameTable();

}

 

 

As you can see, this method simply looks at the specified array of control names for the next ’ctlXXX’ value until it runs out then it generates one. The ctlXXX ‘counter’ restarts for each NamingContainer…so it’s pretty unlikely you’ll get to the end of the static array of control names. The ‘automaticIDs’ array is used simply as a performance optimization…saving even this very simple piece of code from running on each control rendering.

So What’s With the Control’s ‘Name’

In the examples in the previous section you can see that there’s not just an Id attribute, rather there’s also a ‘name’ attribute for each control, e.g., “rootPanel$childPanel1$TextBox". You’ll see that this looks really similar to the Id property (and is in fact generated using almost an identical code-path), so why are there two different attributes. In the simplest explanation, consider the ‘name’ attribute to be the ‘server side’ name and the ‘id’ attribute to be the client side one. 
When you “post’ or ‘get’ a form in HTML the ‘name’ attribute links the specific HTML control to the value which gets posted back; this is where the ‘uniqueness’ part comes in. By being unique it’s possible to hook up the posted value back to the Control on the server, in addition this also specifies the correct event to call on postback. 

NOTE: While in current ASP.NET, it’s possible to translate from the name attribute to the id attribute this is not guaranteed  and will most likely break when using the new ASP.NET 4.0 functionality. We will not alter the ‘name’ attribute in ASP.NET 4.0…

Client Ids in DataBound Controls

The most critical reason for ensuring rendered controls have unique id attributes is controls within Data Bound controls. As an example the following markup defines a simple ListView hooked up to the Northwind database:

 

<tc:NamingPanel runat="server" id="rootPanel"> 
      <tc:NamingPanel runat="server">        

          <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
              SelectCommand="SELECT [ProductName] FROM [Alphabetical list of products]"></asp:SqlDataSource> 
          <asp:ListView ID="ListView1" runat="server" DataSourceID="SqlDataSource1" 
              onselectedindexchanged="ListView1_SelectedIndexChanged"> 
              <ItemTemplate> 
                  <tr style=""> 
                      <td> 
                          <asp:Label ID="ProductNameLabel" runat="server" 
                              Text='<%# Eval("ProductName") %>' /> 
                      </td> 
                  </tr> 
              </ItemTemplate> 
                  <LayoutTemplate> 
                  <table runat="server"> 
                      <tr runat="server"> 
                          <td runat="server"> 
                              <table ID="itemPlaceholderContainer" runat="server" border="0" style=""> 
                                  <tr runat="server" style=""> 
                                      <th runat="server"> 
                                          ProductName</th> 
                                  </tr> 
                                  <tr ID="itemPlaceholder" runat="server"> 
                                  </tr> 
                              </table> 
                          </td> 
                      </tr> 
                      <tr runat="server"> 
                          <td runat="server" style=""> 
                          </td> 
                      </tr> 
                  </table> 
              </LayoutTemplate> 
          </asp:ListView> 
      </tc:NamingPanel> 
  </tc:NamingPanel>

 

The markup above has the ListView inside the NamingPanels we had previously. This markup generates the following HTML (or a sinppet of it…)

    <table> 
            <tr> 
                <td> 
                                <table id="rootPanel_ctl00_ListView1_itemPlaceholderContainer" border="0" style=""> 
                    <tr style=""> 
                        <th> ProductName</th> 
                    </tr> 
                    <tr style=""> 
                        <td> 
                            <span id="rootPanel_ctl00_ListView1_ctrl0_ProductNameLabel">Chai</span> 
                        </td> 
                    </tr>

 

As you can see, the controls in the ListView are rendered using a mix of user-defined as well as auto-generated ids…this is great for ensuring the names are unique but pretty useless if you need to know the ids of the controls at render time…As an example it’s really difficult to ensure that client side code such as Javascript can easily identify a specific control within the page without mixing in the classic <%=Control.ClientId%> server side markup into the JS.

NOTE: Databound controls are more difficult than usual when trying to ensure unique control Ids you only have access to some of the container controls at design-time (e.g., ctrl0 in the above html is not accessible in the designer…so you can’t change the id without hooking into backend events).

More Control over Control Ids…ASP.NET 4.0 Client Ids

So, what are we doing in ASP.NET 4.0 to let you define the ids?

NOTE: The information below is different to the Visual Studio 10 PDC CTP VPC (love those acronyms!). Following the CTP release we refactored to remove the ‘set’ on the ClientId property…this is to improve the behavior of the API, previously the value you got back from ClientId would almost certainly not match the value you set. In the new API you set the Id parameter and can then ‘get’ the ClientId property…

IMPORTANT: The new Client Id functionality has no impact on the server side name of the control, so string myString = TextBox1.Text; is completely unaffected by the Client Id changing.

In order to enable you to have more control over Client Ids we added a of property on ‘System.Web.UI.Control’:

ClientIdMode

  • Legacy – This is exactly equivalent to the ASP.NET 2.0 Client Id behavior. This is also the default if no ClientIdMode property is set in the current control’s hierarchy.
  • Static – You set it, you get it…most controllable but potentially the least ‘safe’. If a control is set to ‘static’ ClientIdMode then exactly what you set for Id is used as the client id, no matter what naming container the control sits in.
  • Predictable – Mostly for use in DataBound controls, only uses ‘set’ Id attributes of parent Naming Containers (so, no automatic id generation using ‘ctlXXX’ names). This also works in conjunction with the DataBound control property RowClientIdSuffix to allow you to define the ‘uniquefying’ item for the specific row. Previously, the auto-generated name ctrl0…ctrl1…ctrl2…etc…was used to provide this uniqueifying function for controls in the rows of DataBound controls.
  • Inherit -  Essentially the ‘default’ behavior for controls, explicitly settingClientIdMode = ‘Inherit’ essentially clears the ClientIdMode for the current control and allows this and any child controls (which have either ‘Inherit’ asClientIdMode or ClientIdMode not set) will take the ClientIdMode of any parent control (including Page and Config…see below)

Page

You can also set the ClientIdMode at Page level, this defines the defaultClientIdMode for all controls within the current page…

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" ClientIdMode="Static"%>

Config

It’s also possible to set the ClientIdMode in the config section at either machine or application level…this defines the default ClientIdMode for all controls within all pages in the application.

<system.web> 
  <pages clientIdMode="Predictable"></pages> 
</system.web>

So what can I do with that?

Restarting Control Naming

As mentioned earlier the client id for a control is derived from the NamingContainers in which the control sits in the Control Hierarchy, normally this is only the actual controls within the page (e.g., in DataBound controls), however when using MasterPages you can end up with ids as found in the following HTML:

    <div id="ctl00_ContentPlaceHolder1_ParentPanel"> 
        <div id="ctl00_ContentPlaceHolder1_ParentPanel_NamingPanel1"> 
            <input name="ctl00$ContentPlaceHolder1$ParentPanel$NamingPanel1$TextBox1" type="text" value="Hello!" id="ctl00_ContentPlaceHolder1_ParentPanel_NamingPanel1_TextBox1" /> 
    </div>

Even though the TextBox shown in the HTML is only within two NamingContainers within the page, due to the way MasterPages hook together you wind up with a control id like the following: ctl00_ContentPlaceHolder1_ParentPanel_NamingPanel1_TextBox1

Obviously this is a pretty long id…guaranteed unique within the page but unnecessarily long for most purposed. In this example we now want to reduce the length of the rendered id and make it more user defined (so, shortened, no ctlXXX etc…). The easiest way to achieve this is the following

<tc:NamingPanel runat="server" ID="ParentPanel" ClientIdMode="Static"
    <tc:NamingPanel runat="server" ID="NamingPanel1" ClientIdMode=”Predictable"> 
        <asp:TextBox ID="TextBox1" runat="server" Text="Hello!"></asp:TextBox> 
    </tc:NamingPanel> 
</tc:NamingPanel>

In this sample (identical to earlier markup) we’ve set the ClientIdMode to ‘Static’ on the outermost NamingPanel as well as setting the next ‘Child’ control to ‘Predictable’. This results in this markup (note, the rest of the page, MasterPages etc,…is identical to the previous example)

         <div id="ParentPanel"> 
        <div id="ParentPanel_NamingPanel1"> 
            <input name="ctl00$ContentPlaceHolder1$ParentPanel$NamingPanel1$TextBox1" type="text" value="Hello!" id="ParentPanel_NamingPanel1_TextBox1" /> 
    </div>

Here we’ve essentially restarted the naming hierarchy for Controls to the outermostNamingPanel , eliminating the ContentPlaceHolder and MasterPage names from the id (note: the ‘name’ attribute is unaffected…meaning we retain the normal ASP.NET functionality for events, ViewState etc…). A nice side-effect of restarting the naming hierarchy is that even if the markup defining the NamingPanels  is moved to a different ContentPlaceholder, the rendered Client Ids remain the same.

NOTE: The developer does now take more responsibility for ensuring that rendered Control Ids are unique…not doing so can break functionality which expect to find unique HTML elements for each Id (e.g., Javascript’s GetElementById()).

Predictable DataBound Client Ids

As we showed previously, the Client Ids  generated for Controls within DataBound list controls are pretty messy and not really predictable…How does the new Client Id functionality help?

We want to achieve the following:

  1. Shorten the Client Ids for Controls
  2. Make the Client Id predictable
  3. Make the Client Id unique across pages (rather than ‘within’ pages)

So, how do we do this?

<tc:NamingPanel runat="server" id="rootPanel"> 
      <tc:NamingPanel runat="server">        

          <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
              SelectCommand="SELECT [ProductName], [ProductID] FROM [Alphabetical list of products]"></asp:SqlDataSource> 
          <asp:ListView ID="ListView1" runat="server" DataSourceID="SqlDataSource1" 
              onselectedindexchanged="ListView1_SelectedIndexChanged"ClientIdMode=”Predictable” RowClientIdSuffix=”ProductID”> 
              <ItemTemplate> 
                  <tr style=""> 
                      <td> 
                          <asp:Label ID="ProductNameLabel" runat="server" 
                              Text='<%# Eval("ProductName") %>' /> 
                      </td> 
                  </tr> 
              </ItemTemplate> 
                  <LayoutTemplate> 
                  <table runat="server"> 
                      <tr runat="server"> 
                          <td runat="server"> 
                              <table ID="itemPlaceholderContainer" runat="server" border="0" style=""> 
                                  <tr runat="server" style=""> 
                                      <th runat="server"> 
                                          ProductName</th> 
                                  </tr> 
                                  <tr ID="itemPlaceholder" runat="server"> 
                                  </tr> 
                              </table> 
                          </td> 
                      </tr> 
                      <tr runat="server"> 
                          <td runat="server" style=""> 
                          </td> 
                      </tr> 
                  </table> 
              </LayoutTemplate> 
          </asp:ListView> 
      </tc:NamingPanel> 
  </tc:NamingPanel>

In the markup above, we have used the ClientIdMode and RowClientIdSuffixproperties. RowClientIdSuffix is a property which can only be used in DataBound controls and actually differs based on the DataBound control it’s used with:

GridView: You can specify the name of a column in the DataSource or multiple columns which are then combined at runtime. As an example if you specifiedRowClientIdSuffix as “ProductName, ProductId” in a GridView  then the rendered control Id would be "rootPanel_GridView1_ProductNameLabel_Chai_1”.

ListView: You can specify a single column in the DataSource which will be appended to the Client Id. As an example if you specified RowClientIdSuffix as “ProductName” in a ListViewthen the rendered control Id would be "rootPanel_ListView1_ProductNameLabel_1”. In this case the last ‘1’ comes from the ProductId of the DataItem.

Repeater: No RowClientIdSuffix property is allowed. In a Repeater the index of the Row is used. In the case above, you would wind up with "rootPanel_Repeater1_ProductNameLabel_0”. The ‘0’ is simply the index of the current row.

Note: FormViewDetailsView do not have multiple rows so do not have a RowClientIdSuffix property.

 

Conclusion

So, there you have it…I dare say I’ll post again in future about this topic, we have a sample app which will find it’s way onto Codeplex in the near future!

 

NOTE: In current CTP builds you cannot use UpdatePanels with controls when you use the new Client Id functionality. This is fixed internally and will work correctly in future public releases.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

LINQ to SQL and SqlConnection ( "when you're wrong, you're wrong" :-) )

Saturday, 20 December 2008 20:41 by tunnel

I was talking to Ian and another chap at the UK Launch yesterday about LINQ to SQL and my use of the DataContext in some demo code where I always tend to write something like;

      using (DataContext ctx = new DataContext())
{
}

and whether I actually needed to do that dispose or not?

Now...I was pretty confident that I do need to do this for two reasons;

  1. DataContext is disposable so I figure I should probably Dispose() of it - generally been my approach to anything IDisposable.
  2. Someone had recently asked me whether DataContext.Dispose() actually did close the SQL connection and I'd done a little bit of reflecting on it and spotted that;
    1. DataContext.Dispose() -> SqlProvider.Dispose() -> SqlConnectionManager.DisposeConnection() -> SqlConnection.Close()

although the code paths are more complex than that and I haven't attempted to figure out under what conditions the various calls happen.

So, I'd kind of reasoned that;

  1. If you don't dispose of the DataContext then you won't get the connection closed and back in the pool until finalisation time which is generally a bad idea.

but then I started to wonder whether that assumption was right and it turns out that it isn't really right but then it's not exactly wrong either :-)

So, to test this all out I did a bit of debugging and wrote;

 using (NorthwindDataContext ctx = new NorthwindDataContext())
{
(from c in ctx.Customers select c).ToList();
(from c in ctx.Customers select c).ToList();
(from c in ctx.Customers select c).ToList();
}

and ran it under the debugger with breakpoints in SqlConnection.Open() and SqlConnection.Close().

I was foxed for a while because I see 5 calls to Open() and 5 calls to Close(). I was expecting either;

  1. 1 call to Open and 1 to Close.
  2. 3 calls to Open and 3 to Close.

A quick look at the call-stacks showed that it seems like when we hit the first query to be evaluated we first do;

image

which looks like we're opening the connection in order to test if it's SQLCE or not. Then we see a Close followed by;

image

So...a similar check to see if it's SQL 2000 or earlier followed by a Close.

So...following that I see an Open/Close pairing around each query that I execute which suggests that, in an ideal world, there'd be no need to dispose of the context because the connection is being opened/closed on demand every time we do a query. The Close calls that I see are coming from;

image

That is - they are not coming from Dispose on the DataContext but, instead, they are coming from the Dispose on the ObjectReaderCompiler.ObjectReader. Who he?

Well, it looks like he's the IEnumerator that's returned for my foreach iteration and he's IDisposable so if he gets disposed (i.e. when you've read all the data) then he closes the connection. He's getting disposed here because foreach is being friendly but it's not hard to come up with a situation where that might not happen;

So...I should be able to defeat that with something that leaves the enumerator kicking around like;

 using (NorthwindDataContext ctx = new NorthwindDataContext())
{
var query = from c in ctx.Customers
select c;
var enumerator = query.GetEnumerator();
}

and I finally see the DataContext stepping in and disposing and ultimately closing the connection;

image

Now, arguably I should be disposing of the enumerator here and that's solve the problem of the open connection again but really that just goes back to the original idea which is "if it's disposable, dispose it" so I've really just moved the decision from one disposable type to another.

Additionally, I'd imagine that there are lots of other places where not disposing the DataContext could mean that you wait until a finalizer runs in order to get a connection back into the pool so it feels like the right thing to do is always to Dispose() to be safe rather than sorry.

There's a FAQ up here about LINQ to SQL;

http://msdn2.microsoft.com/en-us/library/bb386929.aspx

which has a section in it about the lifetime of connections so that'd be the right place to go for a definitive answer.

I like simple things so I'm going to stick with my basic law of "If it's disposable, dispose of it" :-)

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags:   ,
Categories:   .Net | web 2.0 | Web Development
Actions:   E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed

Silverlight 2 Beta 2 Available plus Refreshed Screencasts

Saturday, 20 December 2008 20:37 by tunnel

Silverlight 2 Beta 2 is available - see http://www.silverlight.net for details on how to download it and for the list of breaking changes between Beta 1 and Beta 2.

Here's where to get the runtime and the tooling ( SDK and Visual Studio )

Here's where to get Expression Blend 2.5 June CTP ( you're going to like this one if you've been hoping for template editing :-) )

Here's where to get the Deep Zoom Composer, or follow this link.

You'll find that if you view your Silverlight Beta 1 applications with Silverlight Beta 2 then they won't display - you'll need to update those applications in order to work with Beta 2 and that is going to include rebuilding/reworking the code and changing the hosting page to request Beta 2.

Mike and I made a bunch of videos for Silverlight Beta 1 and an application to display them.

We've now updated those videos for Beta 2 and also ported the viewing application. I've removed the original player and the videos that it was displaying but the URL for the application remains the same.

The application allows you to view or download the video files and is available by clicking on the image below;

image

Note that any video that lasts more than 10 minutes is split into 2 pieces at the 9 minute mark and the second part should just load automatically.

If you don't want to use this custom application then you can view the video files by clicking the links below ( courtesy of Silverlight Streaming );

  1. "Hello World" with VS and Blend
  2. Anatomy of a Silverlight Application
  3. The Visual Studio Silverlight Environment
  4. The <asp:Silverlight> Control (and Part 2 )
  5. Controls - What's In the Box?
  6. Why Controls have a Content Property
  7. Width, Height, Margin, Padding, Alignment
  8. Laying out Content with Grid
  9. How To Use a GridSplitter
  10. Laying out Content with StackPanel
  11. Laying out Content with Canvas
  12. Embedding Video and Audio
  13. Handling Media Events
  14. Simple Data Binding of UI to .NET Classes ( and Part 2 )
  15. List Based Data Binding ( and Part 2 )
  16. Data Binding UI to .NET Classes with Converters
  17. Using Custom Types in XAML
  18. Applying Simple Styles to Control Look and Feel
  19. Templating a Simple Button Control
  20. How to Build a Simple User Control ( and Part 2 )
  21. Controlling Animations & Storyboards ( and Part 2 )
  22. Accessing resources from XAP/DLL/Site
  23. Asynchronous Downloads with the WebClient Class
  24. Asynchronous Uploads with the WebClient Class
  25. HTTP request with HttpWebRequest
  26. Making Requests Cross-Site to Another Domain
  27. Making Calls to Web Services ( and Part 2
  28. Calling Web Services over HTTPS
  29. Using Sockets ( and Part 2 )
  30. Using File Dialogs & Files from the User
  31. Using Isolated Storage for Application Data ( and Part 2 )
  32. Accessing and Changing Isolated Storage Quotas
  33. Modifying the HTML DOM from .NET Code
  34. Calling Javascript Functions from .NET Code
  35. Calling .NET Functions from Javascript Code
  36. Handling .NET Events in Javascript Code
  37. Handling HTML DOM Events in .NET Code
  38. Evaluating Javascript from .NET Code
  39. How to Pass Initial Parameters from the Web Page
  40. How To Display A Custom Splash Screen
  41. Reading/Writing XML with LINQ to XML
  42. Dynamically Loading Assemblies/Code
  43. The <asp:MediaPlayer> Control ( and Part 2 )
  44. More on the <asp:MediaPlayer> Control (and Part 2 )
  45. Loading Media at Runtime
  46. Hosting an Application on Silverlight Streaming ( and Part 2 )
  47. Using Multiple Threads with the BackgroundWorker ( and Part 2 )
  48. Making Use of Custom Fonts
  49. Getting Started with MultiScaleImage (DeepZoom) ( and Part 2 )
  50. Getting Started with the DeepZoom Composer
  51. Getting Started with the DataGrid ( and Part 2 )
  52. Insert, Update, Delete with the DataGrid

If you want to download the video files ( with no 9 minute split ) then you can use the links below ( courtesy of my blog site so expect slower downloads ) to download zipped versions;

  1. "Hello World" with VS and Blend
  2. Anatomy of a Silverlight Application
  3. The Visual Studio Silverlight Environment
  4. The <asp:Silverlight> Control
  5. Controls - What's In the Box?
  6. Why Controls have a Content Property
  7. Width, Height, Margin, Padding, Alignment
  8. Laying out Content with Grid
  9. How To Use a GridSplitter
  10. Laying out Content with StackPanel
  11. Laying out Content with Canvas
  12. Embedding Video and Audio
  13. Handling Media Events
  14. Simple Data Binding of UI to .NET Classes
  15. List Based Data Binding
  16. Data Binding UI to .NET Classes with Converters
  17. Using Custom Types in XAML
  18. Applying Simple Styles to Control Look and Feel
  19. Templating a Simple Button Control
  20. How to Build a Simple User Control
  21. Controlling Animations & Storyboards
  22. Accessing resources from XAP/DLL/Site
  23. Asynchronous Downloads with the WebClient Class
  24. Asynchronous Uploads with the WebClient Class
  25. HTTP request with HttpWebRequest
  26. Making Requests Cross-Site to Another Domain
  27. Making Calls to Web Services
  28. Calling Web Services over HTTPS
  29. Using Sockets
  30. Using File Dialogs & Files from the User
  31. Using Isolated Storage for Application Data
  32. Accessing and Changing Isolated Storage Quotas
  33. Modifying the HTML DOM from .NET Code
  34. Calling Javascript Functions from .NET Code
  35. Calling .NET Functions from Javascript Code
  36. Handling .NET Events in Javascript Code
  37. Handling HTML DOM Events in .NET Code
  38. Evaluating Javascript from .NET Code
  39. How to Pass Initial Parameters from the Web Page
  40. How To Display A Custom Splash Screen
  41. Reading/Writing XML with LINQ to XML
  42. Dynamically Loading Assemblies/Code
  43. The <asp:MediaPlayer> Control
  44. More on the <asp:MediaPlayer> Control
  45. Loading Media at Runtime
  46. Hosting an Application on Silverlight Streaming
  47. Using Multiple Threads with the BackgroundWorker
  48. Making Use of Custom Fonts
  49. Getting Started with MultiScaleImage (DeepZoom)
  50. Getting Started with the DeepZoom Composer
  51. Getting Started with the DataGrid
  52. Insert, Update, Delete with the DataGrid

If you don't want the hassle of having to manually right-mouse on all these video files and download them then you can just use whatever your favourite downloading tool is with these hyperlinks (no numbering here to make it easy to copy/paste );

http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_HelloWorld.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_Anatomy.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_VSEnvironment.zip
http://www.mtaulty.com/downloads/SLVideosB2/MO_B2_SilverlightControl.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_Controls.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_ContentControls.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_MarginsEtc.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_GridLayout.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_GridSplitter.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_StackPanelLayout.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_CanvasLayout.zip
http://www.mtaulty.com/downloads/SLVideosB2/MO_B2_MediaElement.zip
http://www.mtaulty.com/downloads/SLVideosB2/MO_B2_MediaElement2.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_SimpleBinding.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_ListBinding.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_BindingWithConversion.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_CustomTypesInXaml.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_SimpleStyles.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_SimpleTemplating.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_UserControl.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_Storyboards.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_ResourcePackaging.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_WebClientAsyncHttpDownload.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_WebClientAsyncHttpUpload.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_HttpWebRequest.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_CrossSiteCalls.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_WebServices.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_HttpsWebServices.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_Sockets.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_FileDialogsAndFiles.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_UsingIsoStore.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_ExpandingIsoStore.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_SLModifiesDOM.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_NetCallsJsFunction.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_JsCallsNet.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_JSHandlesNetEvent.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_NetHandlesDomEvent.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_JsEval.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_InitParams.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_SplashScreen.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_XmlReadingWriting.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_DynamicLoadingOfCode.zip
http://www.mtaulty.com/downloads/SLVideosB2/MO_B2_ASPMediaPlayer.zip
http://www.mtaulty.com/downloads/SLVideosB2/MO_B2_ASPMediaPlayer2.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_MediaAtRuntime.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_SilverlightStreaming.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_BackgroundWorker.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_CustomFonts.zip
http://www.mtaulty.com/downloads/SLVideosB2/MO_B2_MultiScaleImage.zip
http://www.mtaulty.com/downloads/SLVideosB2/MO_B2_DeepZoomComposer.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_DataGrid1.zip
http://www.mtaulty.com/downloads/SLVideosB2/MT_B2_DataGrid2.zip

If you don't have a favourite downloading tool then you can download this console application and it will download the zip files to your desktop for you ( leave it running over night or something ) or change the code to make it do something different. Please don't run this unless you really want all those videos because I have concerns about maxing out my hosting environment :-)

Console Application For Downloading All These Videos To Your Desktop

You will also soon find these videos up at http://www.silverlight.net where they have a lot more ( and superior ) infrastructure! :-)

If you spot a bad link, a bad video then do drop me a line and I'll try and get it fixed asap.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

PHP vs .NET

Saturday, 20 December 2008 20:04 by tunnel

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags:  
Categories:   .Net | Humor | Web Development
Actions:   E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed