Blogs from
Welcome to Sign in | Join | Help
in Search

Ezequiel Espíndola's Blog

  • I’m off the Commerce Starter Kit community

    To make a long story short, the people running the Commerce Starter Kit development and community seem a little short minded. They censor threads where other developers like me share a view different from their view.

    What just happened is almost hilarious. I wonder what they would do if I told them I think the platform is average, but not good. What would they do if I told them that they should be using custom controls to make sense of ASP.NET 2.0 theming and skinning capabilities. Or that they should be creating a better object model instead of just throwing readers to the UI. Or that they should consider being multi-site or multi-currency. Or that they should care about web standards and good web design. It’s not that they don’t care or they won’t. Maybe they do; there are already some improvements on the way. It’s that they don’t like people telling them anything that don’t go with their believing.

    I started a thread asking why they wouldn’t use an Object Relational Mapper to handle the data access management. And if there were any plans to replace the IDataReaders with custom or generic collections, of the type IList<Product> for example. It turned out that they dislike so much the OR/M subject that I got accused of “posting so much probably for other reasons”. WTF?

    This is what spookythooth had to say on a PM after he locked the thread and I asked him what was that all about:

    “Ez I have had griefers on my forums before and they all do the same things- spam the crap out of threads and cause arguments. Some people live off that and rather than just ban you (which I was tempted to do) I decided to hear from you why you have posted more than any other forum user in the last 6 months. That's a lot of time spent to tell a lot of people why they're wrong don't you think? You're not helping when you do that - you're especially not helping when post wrong things - which is what you did. No one does that unless they're trying to piss people off.

    When I looked over your activity and your posts this last weekend I can't help but think you're the kind of guy that likes to argue. Go do it on your own CS site (which yes, I took a look at). This forum is for helping people, not arguing.

    I still want to know why you have posted so much over the last few days.”

    If you build a community you expect people to participate in it, not to refrain from doing it. Besides, you can see I tried to help on many other threads on that forum.

    Here’s my answer so my point stays clear:

    “I probably like to argue, I won't say I don't. But what I really like is to exchange knowledge. If you say I'm wrong you believe you're right. What would you say if I told you the one who's wrong is you?

    I think the thread in where I posted about taking values from the QueryString turned out helpful in the end. I was wrong, but the original code could be considered wrong too. The result from the conversation was a better pattern for it.

    I hope to be clear now on the OR/M thread. This is stuff I'm trying and I see it coming with a positive result. But what I like most is to bring the model to a fully object-oriented one. So in the end, it won't matter if the provider is using NHibernate or SqlClient.

    As a side note, this isn't something that happens often to me, but maybe I don't fully understand the things you write the way you meant them because english is not my native language. I could be expressing myself wrong for the same reason.

    For example, I don't understand if you are referring to my activity on that particular thread or the whole forum. I've been posting since the beginning. Reporting bugs, asking questions, sharing my point of view, etc. I posted so much the last few days because I took time to work again with the code because I'm trying to build an e-commerce site. And I didn't just post on that thread. What I do, so you understand why I post on some threads or start new ones, is read all that I haven't read. When I find something I know the answer (or at least I believe I know it) or I happen to have a new question I write it. I don't see what's strange about it. I'm actually trying to read all the unread messages to learn and share what I can.”

    Well, you can’t read the OR/M thread anymore. The bosses didn’t like my latest post and the OR/M thread has gone. You can still see it existed by the published RSS, but you won’t be able to access any of the posts in there.

    So, I've decided to step aside and not share anything I came up with from the application. At least there.

    If you build a community, you have to encourage conversations not the other way around. And I still don't understand what those other reasons could be. I wonder what is all this paranoid about? sigh...

  • ASP.NET 2.0: The "How Do I" Video Series

    A while ago I posted about ASP.NET 2.0 learning resources. This post about ASP.NET 2.0 Membership, Roles, Forms Authentication and Security Resources pointed me to an excellent series of videos called The “How Do I” Video Series. Be sure to check them.
  • Pattern to handle QueryString values on ASP.NET 2.0 pages

    Here you have a good pattern to handle values from the QueryString on your ASP.NET 2.0 pages:
    int _id = 0;
    string id = Request.QueryString["id"];
    if (!String.IsNullOrEmpty(id))
      int.TryParse(id, out _id);

    For more information or to discuss about it go to Getting IDs from the QueryString.

  • Community Server 2.0 Modules

    Rob Howard commented today that there is a module for Community Server 2.0 that allows you to add links to and submissions on your posts. Well, the module is not quite yet on the streets.

    I look forward to something like it. It would be good if it had an easy way to template it and add new services with their icon, etc.

  • Selecting a default item after a DataBound operation in ASP.NET 2.0

    When using the new DataSource objects you don’t need to write code for data binding. Code like this is not needed anymore:

    DropDownList1.DataSource = DataSet1;
    DropDownList1.Items.FindByValue(Request.QueryString[“state”]).Selected = true;

    You simply point the DataSourceID property of the DropDownList to a properly setup SqlDataSource or ObjectDataSource and voila! binding occurs behind scenes without need for code.

    However, how do you solve what comes after the call to DataBind(), the line that selects a current default value and could previously been in the Page_Load event or DataBind overridden method?

    The easy way to do it is to define a handler for the OnDataBound event that gets fired after the control has been databound.

    <asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SqlDataSource1" DataTextField="Name" DataValueField="Id" OnDataBound="DropDownList1_DataBound" />

    protected void DropDownList1_DataBound(object sender, EventArgs e)
      string selectedValue = Request.QueryString["id"];
      if (selectedValue != null)
        ListItem li = DropDownList1.Items.FindByValue(selectedValue);
        if (li != null)
          li.Selected = true;

    This simple code checks to see if a value has been passed through the QueryString and that it actually exists on the ListItemCollection of the DropDownList. If everything goes fine, the item for the value passed will be selected.

    Another related and interesting new feature of the controls derived from ListControl is the property “AppendDataBoundItems”.

    In ASP.NET 1.x the DataBind operation always replaced the existing items, so you would have to bind items first and then add any custom values. You couldn’t specify them in a declarative way with an <asp:ListItem> tag on the page markup, but needed to add them programmatically. Now, if you set AppendDataBoundItems=”true” the existing items are kept in the collection.

  • Blog Updated to Community Server 2.0!

    I've just updated the blogs to Community Server 2.0. To make the blogs work at the root I followed the same process as for the Beta 2. Working nice so far. :)
  • New ASP.NET Starter Kit: eBay Selling Starter Kit

    Scott Guthrie have been posting a ton of interesting content lately on his blog. I found thru it that a new ASP.NET 2.0 Starter Kit is on the streets. It's the eBay Selling Starter Kit for VB.NET. I would say too bad if it's only in VB.NET, but I will download it anyway to take a look.

    Scott notes that this is different from the ASP.NET 2.0 PayPal-enabled Commerce Starter Kit. I've been playing with the Commerce Starter Kit and can highly recommend it. It's more like the lite version of a product than a Starter Kit and a fun way to learn ASP.NET 2.0.
  • Community Server 2.0 Is Out!

    I've just downloaded Community Server 2.0. The naming for the versions have changed to be aligned with the naming that Microsoft gives to versions of Visual Studio 2005. The source code will be released later today. This blog is using the Beta 2, I'm planning to update it later. =)

  • RSS Feed Readers

    Scott Guthrie posted about a new service called (pronounced Skweet) built with ASP.NET 2.0. It allows you to receive any RSS or Atom feeds in your e-mail. I’m currently using Rojo. I really don’t want more e-mails in my Inbox, I’ve found out it’s much more easier to just go to a web site and have everything there to read it when I want without being worried about how many Unread E-Mails I accumulate.

    Do you know any other services similar to Rojo that could be better?

    Technorati Tags: Rojo, Squeet, RSS, Feed Readers

  • A Sign Of Recursion?

    Real life recursion exists:
    A Sign of Recursion
    Technorati Tags : Life, Recursion
  • Enterprise Library for .NET Framework 2.0

    It's been some time since I last took a peek at the Enterprise Library for .NET.
    I've just received an e-mail from Tom Hollander stating that the Enterprise Library for .NET Framework 2.0 is now available.
    The release includes six application blocks (Caching, Cryptography, Data Access, Exception Handling, Logging and Security), and it's similar in functionality to the previous releases for .NET 1.1, but it has been redesigned to use new capabilities of .NET 2.0.
    By the way, one of the owners of the project at gotdotnet codegalleryEdward Jezierski, is from my country, at the south of the world.
    Technorati Tags : .NET, net-20, .NET Framework 2.0, EntLib
  • Testing Qumana

    I'm trying Qumana to see how easier is to post from a desktop client. The FTB editor just doesn't work. May be it's something at my Firefox installation that's interfering, but shortcuts like ctrl-arrows don't work and everything hangs. This only happens on the post editor, so.. it's definitely some problem with CS and not my whole browser experience.
    So far it seems it's working. I'm editing from Qumana to add that I will try BlogJet also.. ;)
    In case you don't know how to set up Qumana for Community Server 2 these are the settings you need:
    Server: MetaWebLog API
    Host: (no http://, no end /)
    EndPoint: /blogs/metablog.ashx
    Port: 80 (or the port you normally use)
    One last comment. Categories don't work.
    Technorati Tags : Qumana, BlogJet
  • Blog Updated to Community Server 2 Beta 2!

    I've updated our Community Server installation to version 2 Beta 2 a couple of days ago. The URL Mapping possibilities are getting better. This time only one small change to a config file was needed, and the location of each blog folder was taken into account as a nice detail.

    With the help of the explanation of Dan Bartels on how to set up Community Server 2 to blog at the root I changed this line in SiteUrls.config:

        <location name="weblogs" path="/blogs/" />


        <location name="weblogs" path="/" physicalPath="/blogs/"  />

    And that was it. That’s all is needed to put multiple blogs at the root of the domain now. There is a substantial difference from what I’ve had to do before don’t you think?

    There is no need to move all the files from /blogs/ to the root anymore. But as a nice detail, you still need to put the folder of your blog at the root if you want it to work without having to write the “default.aspx” part explicitly. If you don’t, you’ll get a 404 File Not Found error.
    In my case, that would be instead of
    You also need to move /blogs/default.aspx to the root if you want to show the aggregated blogs page instead of the default home page of Community Server. I renamed the default one to DefaultOld.aspx just in case.

    I’ve also reported some bugs I found during the update. One is about the Contact page failing when installing CS2 Beta 2 from scratch, other is a bug on the update script schema where “dbo” is not specified on the creation of the cs_ThreadRatings table. The latest one is about a secondary community working on the same database but for another URL not being retrieved anymore. Instead the first community is shown. I have no solution yet for this one.

    Update: While I was writing this, Alex Lowe posted the fix for the secondary community problem. The 'enableVirtualization' setting on communityserver.config must be set to true.

  • NewsMonster Screws Firefox 1.5

    I've just re-installed Firefox 1.5. broke it. Silly me, I wanted to try it and didn't notice the site was last updated 3 years ago and the requirements state Mozilla 1.0. I don't know how well did it work in Firefox 1.0, but it screws 1.5 completely.

    Two things come out of this. First, Firefox should have a better way to handle software that it's not prepared for it and will break it. Second, I don't get why someone can create a software application that breaks in future hosts and abandon it in favor of not one, but two different projects that seem exactly the same at first sight.

    I found out about NewsMonster yesterday when reading this post by Kevin Burton on the new acquisition of Yahoo!, WebJay. He mentions, one of his aggregator projects. And from there I got to and
    I'm still trying to find out what works best for me as an RSS aggregator. I don't buy much on the idea of having it all on a web page just yet, so I wanted to try NewsMonster first. Well, you know what happened.

    I'm willing to give a chance to the web applications because I know they won't break my browser. But I’m starting wondering what the real difference between them is and already thinking that have better intentions. That means that without having a clue, I already choose a winner just because they didn’t treat me bad.

    Morale: don't go around up starting new stuff hoping to be acquired by some big company to get rich and forget about your users. You'll never win that way.

    One extra though on the ‘don’t have a clue’. I’m finding difficult to understand what all these new web applications are about. May be it’s just me, but I think they should try to improve their communication. I want to know what is good in them in practical words, not marketing ones. I want to understand what all is about without thinking too much. I want it to be intuitive. There is a lack of intuitiveness on the web.

  • Connection String Settings In ASP.NET 2.0

    There is a new configuration section for connection strings on ASP.NET 2.0 called <connectionStrings>. It is something so simple it seems dumb, but it helps to enforce recommended practices from the start. I really like this feature because of that.

    In ASP.NET 1.x you could put your connection string anywhere you like it. It was normally on the web.config’s AppSettings section, but there wasn’t any enforcement from the framework on where to put it or how to retrieve it.

    In ASP.NET 2.0 you can have all your connection strings on the <connectionStrings> section of the web.config, benefiting from centralized management and also enhanced security by encrypting them if you want.

        <add name="Pubs" connectionString="Server=(local);Integrated Security=True;Database=pubs;" providerName="System.Data.SqlClient" />

    If you use these features, you can also make use of a new declarative expression that allows you to retrieve the Connection String by name and avoid hard-coding it on the page code.

    This tag would retrieve the Connection String setup above by its name, “Pubs”:

    <asp:SqlDataSource ID="SqlDataSource1" runat="server"
          ConnectionString="<%$ ConnectionStrings:Pubs %>" />

    And you can also specify an expression for the ProviderName property of SqlDataSource:

    <asp:SqlDataSource ID="SqlDataSource1" runat="server"
    ConnectionString="<%$ ConnectionStrings:Pubs %>"
    ProviderName="<%$ ConnectionStrings:Pubs.ProviderName %>" />

More Posts Next page »

This Blog

Post Calendar

<February 2016>


Powered by Community Server, by Telligent Systems