Live Chat Programs

March 23, 2008

Generics and .NET

Filed under: Live Chat software

Also see: Eriskay: a Programming Language Based on Game Semantics

Also see: Snippet Compiler update

Also see: Sliced Bananas On Opaque Data

Microsoft research has a CLI implementation with generics support… At several conferences we have publically said that generics will be added to some future version of.NET. With those two pieces of data, I pose the question - how wide spread should generics be used? Was ATL goodness, or something taken a bit too far?

For those of you unfamiliar with generics, they are basically C++ templates implemented at the runtime level. I’m not a compiler wonk, so I have to go with my most basic understanding - essentially the CLR would do dynamic class generation at runtime, thuse preventing code bloat, but giving you the performance benefit of strongly typed classes. In addition, since the runtime maintains the identity of the class being a generic, features like reflection actually work correctly.


http://www.simplegeek.com/permalink.aspx/28

Blogging and Newspapers, a Lesson in How Not to Brand and Market

Filed under: Live Chat software

Also see: Eriskay: a Programming Language Based on Game Semantics

Much is being made of my decision to ban bloggers from the locker room. To me its pretty amusing. In particular I find it amusing that there is a presumption that if a blogger works for a big company, they must be better. The logic extends to the conclusion that if only I would evaluate the different blogs and make a qualitative selection, then big newspaper bloggers would be chosen as among the best. Let me just say, that should I go that direction, that I find quite a few individual bloggers to be far better than those earning a salary to blog. In fact, some of those blogs are written anonymously.

Which leads to my firm belief that newspapers having “bloggers” is easily one of the many bad decisions that newspapers have made over the past 10 years.

Much of what I am about to say can be considered semantics, but guess what, marketing and branding are all about semantics and perception.

Consider this a rule in marketing that could be added to my Startup Rules.

Never, ever, ever consider something that any literate human being with Internet access can create in under 5 minutes to be a product or service that can in any way differentiate your business.

If you feel that you must offer this product or service as a means of “keeping up” or as a checklist item that you must have for competitive reasons, then do everything possible to brand the product or service in a manner that segregates it from the masses. Perception is reality. If you can leverage your (more…)

YouTube Tries to Get Legal

Filed under: Live Chat software

Also see: New Assembly, Old .NET (and Vice-Versa)

First, let me offer a great big thank you to Youtube from me and everyone on the internet, including many small businesses. Im just guessing here, but based on reports coming from Compete and others, I don’t think its a stretch to say that Youtube subsidizes the cost of more than half the user generated internet bandwidth consumed in the United States.

Yep, you read that right. If you thought that the internet only used free as an incentive back during the Bubble Years, think again. I’m sure I speak for 10s of millions of us who have hosted videos on Youtube when I offer much gratitude to Google for their generosity. Never could even I have imagined that when they bought Youtube it would be such a costly mistake. If buying a company in order to subsidize the video bandwidth of the internet isn’t crazy.., I dont know what is.

Fortunately for Google, they have unquestionably the world’s best network and most likely the world’s lowest bandwidth costs. So if anyone is going to be able to afford that cost, it would be Google.

As long as their stock price doesn’t fall another 50pct that is. At that point even the most forgiving shareholder may ask about the wisdom of subsidizing all things video on the internet. Particularly when they realize that they have forgotten to price in the overhanging risk of the legal copyright challenges still in play against Youtube. Those lawsuits have not gone away, and the risk certainly has not been reduced. They simply are not front of mind to shareholders these (more…)

LINQ - The Uber FindControl

Filed under: Live Chat software

With a simple extension method to ControlCollection to flatten the control tree you can use LINQ to query the control tree:

public static class PageExtensions
{
 public static IEnumerable<Control> All(this ControlCollection controls)
 {
 foreach (Control control in controls)
 {
 foreach (Control grandChild in control.Controls.All())
 yield return grandChild;
	
 yield return control;
 }
 }
}
Now I can do things like this:
// get the first empty textbox
TextBox firstEmpty = accountDetails.Controls
.All()
.OfType<TextBox>()
.Where(tb => tb.Text.Trim().Length == 0)
.FirstOrDefault();
	
// and focus it
if (firstEmpty != null)
 firstEmpty.Focus();

(more…)

Startup, Shutdown and related matters

Filed under: Live Chat software

Also see: New Assembly, Old .NET (and Vice-Versa)

Usually
I write blog articles on topics that people request via email or comments on
other blogs.  Well, nobody has ever
asked me to write anything about shutdown.

size=2>

But then
I look at all the problems that occur during process shutdown in the unmanaged
world.  These problems occur because
many people don’t understand the rules, or they don’t follow the rules, or the
rules couldn’t possibly work anyway.

size=2>

We’ve
taken a somewhat different approach for managed applications.  But I don’t think we’ve ever explained
in detail what that approach is, or how we expect well-written applications to
survive an orderly shutdown. 
Furthermore, managed applications still execute within an unmanaged OS
process, so they are still subject to the OS rules.  And in V1 and V1.1 of the CLR we’ve
horribly violated some of those OS rules related to startup and shutdown.  We’re trying to improve our behavior
here, and I’ll discuss that too.

(more…)

Microformats are like RFID tags for the Web

Filed under: Live Chat software

Also see: LearnExpression.com is live.

Today, I took a much needed break to attend a Microsoft Research talk by Paul Dietz , who is a scientist at the Mitsubishi Electric Research Lab (MERL ).

In describing one of his inventions, a system that automagically pings your waitress when your glass is half empty, Paul described RFID tags as a “passive, non-interactive component”. He then proceeded to describe how he and his associates at MERL have figured out how to enable two devices to communicate using low cost LED lights , at hundreds of bits per second. But I’ll get back to that, in a second.

Suddently, it hit me: a quick and simple way to describe microformats to my friends and colleagues!

A microformat serves the same function on the Web as an RFID tag in a Walmart warehouse ! Microformats are descriptive but passive. They just sit out there and wait to be discovered by an interested agent. They are small and easy to miss, unless you’re looking for them. Microformats, like RFID tags, talk to everyone.

What is a microformat? A microformat is an RFID tag for Web pages. Do you see any problems with this analogy?

Now, back to LEDs and Paul Dietz… I invite you to chew on this for a second:

LED a + LED b = communication medium

Think about the hundreds of LED lights that you encounter on a daily basis: on your keychain, desktop, dashboard, keyboard , remote control, auto, kitchen appliances, telephone, TV, computer, and even your kids. Paul Dietz is not just another Talking Head.

(more…)

A first stab at BaseN encoding with a focus on general alphabet encoding.

Filed under: Live Chat software

Also see: VPC 2007 Dual Monitor support

The comments in the code-only article are fairly decent, but I dislike being extremely verbose in my commenting because then I can’t see my code. A little explanation of the problem is probably in order because of the lack of extremely verbose comments. First, what is base N encoding or alphabet encoding?

Most people assume that encoding into any base in some way equates to mapping a number to some digits, plus some additional characters to represent values we don’t have digits for. This isn’t always the case. An integer encoded as Alphabet{0,1} = 1001 = 9 decimal is identical to Alphabet{+,-} = -++- = 9 decimal. I’ve just change the represenation or alphabet, but the base is still the same (aka base 2).

Explaining bases could take a few years of college courses, as you take the concepts and create increasingly more abstract versions of them. In fact, bases are strange things in some theoretical maths where concepts of groups, colors, stripes, and other words are used to describe how they work. A very simplistic view of the base is available over on Mathworld. In general though, the concept is that any base has a number of digits equal to the base number b (aka radix) where the digits represent the values 0 through b-1. That is easy enough, and it gives us a very generic method for converting a number to any alphabet and back.

To start, we’ll denote an alphabet as a char[] of digits. Digit in this sense is any character that will represent the array index at which it is placed. The base of the alphabet is the length of the character array. The first element in the array at offset {0} has a value of 0 and for all other indices n greater than 0 the value of the digit at n is equal to the index n. That’s all there is to it. Any alphabet of characters can now be translated to and from an integer using this mapping table and the base.

(more…)

Prototypes and Java Config with Spring

Filed under: Live Chat software

Spring is a deep framework providing numerous approaches and techniques for Java developers. This post by Solomon Duskis covers the topic of Java config and prototypes in the framework.

Also see: Java Concurrency, another series on its issues


http://feeds.feedburner.com/~r/techtarget/tsscom/blogs/~3/248013264/thread.tss

VPC 2007 Dual Monitor support

Filed under: Live Chat software

Also see: Prototypes and Java Config with Spring

I have been trying to find a way to allow you to run Virtual PC 2007 with multiple monitors.  Natively VPC 2007 doesnt support more than 1 monitor, however you can “trick” it by using various techniques that expand the desktop area into a larger virtual desktop.

I tried using the awesome MaxiVista tool which can extend your screen across separate PC’s (think “push” remote desktop), but the new multi-monitor compatibility feature of VPC 2007 (which inexplicably does not add multi-monitor support) made this difficult since it ensures that your desktop recaptures your mouse when you move it outside of the VPC window thus preventing the extended screen from being accessible.

So, instead I tried the Remote Desktop approach mentioned in Steven Harman’s blog post.  

Here is a quick rundown on how it works:

Connect 2 monitors to your PC (more than 2 typically don’t work with this approach).   Make sure to extend your desktop onto the 2nd screen via Display Properties -> Settings.  Then launch Remote Desktop (mstsc.exe) with the “/span” flag:

mstsc /span

Then just use Remote Desktop as usual by specifying your VPC’s computer name in the connection dialog.

(more…)

Merry Christmas Indeed!

Filed under: Live Chat software

Also see: Eriskay: a Programming Language Based on Game Semantics

Also see: Prototypes and Java Config with Spring

Janice went all out this year and got me an Ibanez JS1000 (Joe Satriani series) guitar, a Line 6 POD X3 Live effects board and a pair of Roland CM-30 amplified monitors. My fingers are all tore up now since I’ve been out of practice for some time now. But it sure is fun to get back to some jamming. The JS1000 is pretty light and has easy action. Combined with the POD X3 I can get quite a variety of amazing sounds. I even got the X3 hooked up to my MacBook Pro and finally was able to try out Garage Band. I was able to lay down the rhythm track for Crushing Day (what I could remember from back in the day) and then play the lead part over it with no lag. The roland CM-30s are nice because I can run my Alesis QS8 and the POD X3 into them at the same time. This is probly the best setup I’ve ever had.

Later today I hooked up a microphone to the X3 and the kids had a blast talking and play singing into it. “Daddy it sounds kinda like I’m in a cave…”. Perhaps I should cut down some of that reverb. :)  

Santa Clause was good to me this year. (Thanks Janice)


http://weblogs.asp.net/dfindley/archive/2007/12/26/merry-christmas-indeed.aspx

Get free blog up and running in minutes with Blogsome
Theme designed by Jay of onefinejay.com