… This practice of shipping bug-ridden, unfinished software products is common among MANY software firms these days… they put out an unfinished/buggy product, patch it a few times for “free”, then force users to purchase yet another “upgrade” to get any future fixes/improvements regardless of how strong the case is that there are still substantial bugs in the product you PAID for! …
http://suretalent.blogspot.com/2011/10/embarcadero-delphi-xe2-firemonkey.html
This is referring to Delphi XE2, but I recently experienced being forced to pay for what should have been just an interim upgrade with Parallels for the Mac.
MongoDB on Windows should I think come with clearer advice that it really needs to run on a separate server.
Because MongoDB can’t limit its memory use, and can expand to use all available memory, it would appear unsuited for use as part of a desktop application, or a “shared single server” web-based system.
A separate physical or virtual server is required, unless your using Windows Server 2003 or 2008 with WSRM - http://bit.ly/tQs63L
… I doubt that future versions of .NET will be supported on versions of Windows older than Windows 7. What is especially important about this is that newly built applications will therefore not work on Windows XP. …
— Joe Stagner (prev MSFT, now Mozilla)
The whole post “What’s wrong with Microsoft?” makes an interesting read. Joe has always been someone whose opinion I value, even more so now he is outside of Microsoft.
See also his recent post “HTML5 App versus HTML5 Page – What’s the Difference?”
Probably the single biggest reason I use Firefox instead of Google Chrome is that there is no “TabMix Plus” extension for Chrome.
Passing Values to a Function through an Anonymous Type
I’m spending some time looking at ASP.NET MVC. One new common construct I’m seeing is an anonymous type being used to pass property values to a function.
For example, note the third parameter in the method call below:-
routes.MapRoute(
“Default”,
“{controller}/{action}/{id}”,
new { controller = “Home”, action = “Index”, id = UrlParameter.Optional }
);
An anonymous type is being passed to the MapRoute (extension) method that has the following signature.
public static Route MapRoute(this RouteCollection routes, string name, string url, object defaults);
I was surprised to see this because an anonymous class cannot typically be cast to something understandable in the receiving method.
So how then is this achieved? In the case of MVC, the passed in “defaults” object is converted into a Dictionary (a RouteValueDictionary) that contains property names and values determined via reflection.
An Example Implementation
If one wanted to be able to call a method as shown below, it would appear that we have no way to access the properties associated with the “choices” object.
void Main()
{
ProcessChoices( new {marque=”Holden”, model=”Commodore”} );
}public void ProcessChoices(object choices)
{
// choices.marque ? … no
}
However by implementing our own Dictionary we can do so:-
public void ProcessChoices(object choices)
{
var choiceDictionary = new AnonymousObjectDictionary(choices);
Console.WriteLine (choiceDictionary[“marque”]);
}> Holden
A minimal implementation of that AnonymousObjectDictionary is shown below:-
public class AnonymousObjectDictionary : Dictionary<string, object>
{
private readonly Dictionary<string, object> _dictionary;
public AnonymousObjectDictionary(object values)
{
_dictionary = new Dictionary<string, object>();
AddValues(values);
}
private void AddValues(object values)
{
if (values == null)
return;
foreach (PropertyDescriptor propertyDescriptor in TypeDescriptor.GetProperties(values))
{
object value= propertyDescriptor.GetValue(values);
Add(propertyDescriptor.Name, value);
}
}
}
… Which brings me to the punch line of software framework quality: accessibility. To enable developers get the thing done with the framework it must have documentation telling how you get the thing done.
Django folks get it. Django has always had very detailed documentation and no surprise it won the most of the hearts of Python developers back in 2006ish when the framework situation was different with Turbogears et. al. being still in their strength. …
via How does it do a date picker widget?
Something in my opinion, much of the .NET community doesn’t get. MEF 2 Preview 4 anyone?
The original VisiCalc from 32 years ago (the first spreadsheet for PCs) still runs. It’s available for download here. All 27kb of it.
autumn by Markus Dorfmeister
Beautiful (click to see the original)
One can force old IE versions to recognize HTML5 elements with Remy Sharp’s enabling script - http://bit.ly/cmMcvx
What browsers support which HTML5, CSS3, SVG features - http://caniuse.com

