35 posts from: Andres Aguiar's Weblog
Patterns and Practices Summit Recap
(Indexed 2007-11-10):
I spent a fun week in Redmond, in the Patterns and Practices Summit. Jim Newkirk is my new hero. He gave a very good presentation about xUnit, and said some things that it's good to hear these days, like "dependency injection is not required by most applications", and that it reminded him about when one learns about the "Visitor Pattern", and wants to apply it in every place but at the end of the day in a lot of contexts there are much simpler solutions. I proudly got a signed copy of TDD Drive...(truncated)...
Presenting Aikido in the Patterns and Practices Summit
(Indexed 2007-10-31):
I'll be presenting the new Infragistics Aikido Framework in a lunch-time session in the Patterns and Practices summit. Aikido is quite cool. It's very well designed and it makes very easy to create advanced controls that support advanced features like DataBinding, Templating and Appstyling. I'll show how to build a control from scratch that takes advantage of it. The summit content looks quite promising. I'll spend the whole week there, and post my impressions here. BTW, Scott Hanselman is or...(truncated)...
Buenos Aires CodeCamp
(Indexed 2007-10-31):
I did a presentation on LinQ last Wednesday in the Buenos Aires CodeCamp. The event was quite fun. I attended to a presentation by Damian Galletini about Robotics Studio that was quite enlightening. The Robotics Studio runtime is built on top of WCF, and Robotics Studio itself has a very interesting DSL for programming the Robots. I did not know anything about Robots. It's quite easy and fun to use. Anyway I'll need to wait a couple of years until I have an excuse to buy my older kid a Lego Min...(truncated)...
Democratizing the Cloud
(Indexed 2007-08-14):
InfoQ posted a very interesting video from the Democratizing the Cloud presentation by Erik Meijer in QCon. Democratizing the cloud means Make easier to program distributed applications. He wants us to build a single tier app and publish it in multiple tiers. He describes an IL to JavaScript compiler (like Script#) and a MapReduce implementation for LinQ. You can then write C# code and later decide to run it in the browser, or specify a query that today executes over a SQL database but when you...(truncated)...
Normalization
(Indexed 2007-08-04):
Pat Helland has been talking about immutable data for a while. He last post on 'Normalization is for sissies' is quite fun. A not-very-accurate post from Dare made me remember about it and pushed me to post this. Pat is playing with two ideas. One is that immutable data should not be normalized as normalization is designed to help you dealing with updates. Another is that you actually don't need to delete/update the database. 'Deleting' a row means setting a InvalidationTimestamp = now(), and ...(truncated)...
Digging into LinQDataSource
(Indexed 2007-07-30):
The sample code that ScottGu showed for LinQDataSource made it look like it should be called LinQToSqlDataSource. After installing Beta2 I took a look at it. It only has design time support for LinQ To SQL, but you can bind it to any LinQ query in the _Selecting event: protected void LinqDataSource1_Selecting(object sender, LinqDataSourceSelectEventArgs e){ e.Result = from c in MyCustomer.GetCustomers() select new { c.Name };} I did not find a way to handle insert/update/delete, so it looks...(truncated)...
Paging in SQL Server
(Indexed 2007-05-21):
Frans rants about paging support in SQL Server. I obviously agree with him.The good thing is that given that MS is working in a couple of O/R mappings products, they are probably facing the same challenges we face. As that the Entity Framework is built by the SQL Server team, I won't be surprised if Katmai has better support for paging ;).[Image][Image] [Image] [Image]
Astoria
(Indexed 2007-05-05):
I was going to writea blog post on Astoria but Pablo's post says almost everything I was going tosay. I fully agree withhim, in that there are multiple scenarios where the default implementation willbe good enough, and it's much more productive than what we have today. The fact that you can further filter the results of methods like 'CustomersByCity' is a significant step forward compared to the static service interfaces we usually have today. On the other hand,the client-side ...(truncated)...
RE: Disconnected Problems and Solutions
(Indexed 2007-03-30):
Udi replied to my post, I was going to answer in his blog but it was too long.This is not about using DataSets. It's about knowing what happened with an entity. Suppose you want to edit an 'Aggregated Entity', like an Order, with header and details. You want to do it in a multi-tier application. The application retrieves the order using a service, the user changes something in the header, deletes a line and adds another line. Now you want to save the changes.First, you need to know ...(truncated)...
ADO.NET Orcas Entity Framework and disconnected operation
(Indexed 2007-03-30):
David Simmons explained how the 'disconnected mode' works today in Entity Framework (and as far as I know, that's the way it will work in the Orcas release).Basically, there is no disconnected mode. You can create a context and attach objects that you kept somewhere, telling the context if it was added/deleted/modified.This basically means that if you plan to build a multi-tier application with ADO.NET Orcas in the middle tier, you will need to hack your own change tracking mechanism...(truncated)...
Workflow and Rich Object Frameworks
(Indexed 2007-02-04):
Rocky Lhotka claims WF is complimentary of his CLSA.NET framework. His argument can be actually applied to any rich object framework where you put your business logic inside your domain model. I don't think Workflow by itself will have an impact on those kind of frameworks, but Windows Workflow could (or should?) have it, not because the Workflow engine but because the Business Rules engine. When OOP started, the idea was that we will have a class that will be responsible of all the behavio...(truncated)...
Visual Studio Tools for Database Professionals - Rename Refactoring
(Indexed 2007-01-12):
I started playing again with VSTDB. This version only includes on 'Refactoring', the 'Rename' one. The first thing I tried to do was to rename a database column.There are 3 things to do when doing that refactoring:Renaming it in the database table. Renaming it in every other database object that references it (stored procedures, views, etc).Renaming it in your Data Access Code3) was obviously out of the scope of the tool, perhaps they can do it with ADO.NET v.next.2) works OK1) T...(truncated)...
Himalia - Model Driven UIs
(Indexed 2006-12-18):
Himalia looks very very interesting. It's built with Visual Studio DSL tools. It lets you model a UI based on Use Cases, Navigation Models and Presentation Models.They have an implementation that runs the models on top of WPF but the models are not platform dependent, so they plan to have ASP.NET/WinForms ones.I'm not aware that there is any similar tool for any platform in the market today.You can see a 'Pet Shop' demo here http://www.himalia.net/cases.html. [Image]
IE7 RC1 can't update Password Protected Feeds
(Indexed 2006-09-17):
Scott found out that IE and Outlook won't work on authenticated feeds.The argument that there aren't a lot of authenticated feeds is very silly. We have authenticated feeds in our company, and probably a lot of companies do. They are not public. Nobody sees them but us. Not supporting authenticated feeds restricts the use of RSS only to public feeds and seriously limits the scenarios where you can use RSS for enterprise apps. If we want to make RSS the Internet publish/subscribe backbon...(truncated)...
ADO.NET v.next CTP is out
(Indexed 2006-08-16):
At last, the ADO.NET v.next bits are public!Read the announcement here. Keep an eye in the ado.net team blog for more information about it.It includes an ASP.NET build provider, so you can drop a xml file with the model definition in App_Code and you are ready to go. I love that ASP.NET feature. Share this post: Email it! | bookmark it! | digg it! | reddit![Image]
Stored Procs vs Dynamic SQL
(Indexed 2006-06-22):
In DeKlarit's booth at TechEd I had to talk more than I wanted about the famous Stored Procs vs Dynamic SQL debate.People still thinks Stored Procedures are faster, even if there is much evidence that shows otherwise. Fortunately, when they go and ask the LinQ for SQL/Entities team they get the same answer than they get from me. They are not.To add more evidence, a couple of weeks ago I was in Redmond in a meeting with the ADO.NET team, and a Tech Lead from that team wrote the code below and sai...(truncated)...
ADO.NET Entity Framework - It's not just O/R mapping
(Indexed 2006-06-20):
Pablo Castro re-announced the Entity Framework. The white papers are up again.A lot of people have been referring to the ADO.NET EF as an O/R mapper. And it is. But it's much more than that.The EF lets you design your conceptual model based on updateable client-side views. You can use those views without Objects (I mean objects in the 'domain model' sense, of course you will use some CLR object to access it). Additionally, the same conceptual model will eventually be used in other MS products, l...(truncated)...
VS Tools for DB Professional - Does it make sense to generate test data?
(Indexed 2006-06-14):
The new VS for DB Professionals supports generating test data for your data model.For each column, you can specify the Generator you want to use, and you have a bunch of predefined ones (numbers in a range, strings that comply with a regular expression, values from a list, etc, etc, etc), with a lot of sophisticated features like using different distribution algorithms for the data, or read an existing table to find patterns there to then generate the test data (like 'the CustomerName has betwee...(truncated)...
DAT101 - Microsoft's Data Platform Vision
(Indexed 2006-06-12):
It was a good session. I totally buy MS's Data Vision.The most interesting stuff for me is the Entity Framework. At last there will be a conceptual data model that all MS products will share (Reporting, Replication, Analysis Services, ADO.NET). This is a big and important improvement in the way we used data. The 'Data Dude' tool looks cool. If they manage to integrate it with the Entity Framework, it would rock. [Image]
DLinQ = LinQ for SQL
(Indexed 2006-06-12):
OK, it actually happened. We'll have two mapping technologies in .NET v.next.LinQ for SQL, previously known as DLinQ is the 'simple' mapping technology.LinQ for Entities, will be on top of the new ADO.NET Entity Framework, and will be the 'complex' (we could say 'real') mapping technology.Now, does this make sense? How will someone decide to use one or the other? I think Microsoft did this for internal politically correctness (they did not want to not to ship any of the frameworks) but I can't s...(truncated)...
Chloe saved the Keynote
(Indexed 2006-06-12):
I went to TechEd Keynote today and I almost got asleep. Then Chloe appeared and it was the only excuse I had to not to leave before it finished.Luckily, at the end of the keynote the showed the most interesting stuff, like a 30 seconds demo of the new Data tools in VSTS, and the Office demo.I have the Office Beta installed and I think the killer application is Powerpoint 2007. I've been showing the 'Convert to SmartArt' feature to everyone. Most of the keynote demo was around Powerpoint, so I g...(truncated)...
Boston, here we go
(Indexed 2006-06-08):
DeKlarit will have a booth in TechEd (5th year in a row), and I'll be there most of the time, so please come and say hi if you are around. We'll be giving away a Squeezebox!If I'm not there is because I found a TV and Ronaldinho is playing ;)I will be probably attending to the 'ADO.NET Meetup' , so you can find me there too.See you! [Image]
ADO.NET v.next in TechEd, and DLinq?
(Indexed 2006-06-08):
If you are interested in ADO.NET Entity Framework, make sure you attend to the following sessions:DAT101 Microsoft's Data Platform Vision, Dave Campbell (I'm not actually not sure if he'll talk about it in this one, but I guess so).DAT304 Next Generation Data Access in .NET Applications with ADO.NET vNext, Pablo CastroThere's also a Hands On Lab: DAT013 ADO.NET Orcas: LINQ and the Entity Framework By the way, there are no DLinQ breakout sessions in TechEd. The only 'session' on DLinQ is the...(truncated)...
The news are out - ADO.NET 3.0 Entity Framework
(Indexed 2006-05-11):
It went unnoticed in the PDC, but the news are finally out. There's another data mapping technology from Microsoft, this time from the ADO.NET team. The announcement in the ADO.NET team blogs . I think the approach it's much better than any other previous attemps to tackle the problem. For example, they realize that the ProductPrice belongs to the Order 'view' in addition of belonging to the Product class! [Image] Of course, that matches the way we see the world in DeKlarit:[Image][Image]
More Cool Visual Studio Commands
(Indexed 2006-05-11):
Gaston did it again, and the new VS Cool Commands make my life much easier. [Image]
DeKlarit 4.0 Released - CAB, WSE, VS2005, SQL2005, Layouts & More!
(Indexed 2006-05-11):
Last week we released DeKlarit 4.0. I won't post the new feature list here, as you can read it in the website. What I will do is tell you about my favorite new features ;). Gaston built a great platform-independent layout editor. We can now generate very sophisticated forms in Windows Forms or ASP.NET using the same metadata. We added support for the Composite Application Block (and EntLib 2) which makes possible to customize DeKlarit generated Windows Forms applications without modifying the ge...(truncated)...
Medium Trust
(Indexed 2006-05-05):
As I blogged previously we had some issues to make EntLib 2.0 in Medium Trust. It was not the only one. The most annoying one was that TypeConverters do not work! I found this thread in the MS newsgroups that confirmed it. This is really an important restriction for ASP.NET control vendors, I'm not sure how they manage to work in medium trust. In our case we could change our implementation and use a custom TypeEditor in design-time. Another one is that you cannot use OleDb, so using Access is no...(truncated)...
EntLib 2.0 and Medium Trust
(Indexed 2006-05-05):
We needed to make EntLib 2.0 work in medium trust scenarios. Unfortunately, it does not work out of the box. The EntLib team is working on a new build that will fix it, but meanwile I wanted to share what we needed to do. We are basically using the Caching, Authorization and Encryption block. To make it work, we had to remove most the permission demands form the AssemblyInfo.cs files. The only permission that can be declared without complains on build time is the [assembly: SecurityPermission(Se...(truncated)...
MindManager, Requirements and Wikis
(Indexed 2006-05-05):
The MindManager people are working on a cool tool for VSTS. I think it's a good idea, but when I was trying it I felt that I was doing something similar to what I do when I start writing ideas on our internal Wiki in the sense that I have a tree of related documents, that can be represented as a set of Wiki pages, and in each leaf there's probably a document describing the feature. In their tool they have a text editor to create it, but it would be much better if it was a Wiki page. On the other...(truncated)...
Microsoft's Template Engine
(Indexed 2006-03-21):
Microsoft is shipping T4, an ASP-like template engine. It's included in the 'Guidance Automation Extensions' and with the DSL tools package now part of the Visual Studio SDK, so it's free. Actually, it looks it maybe redistributable, and in that case, as far as I know, will be the first template engine that can be freely redistributable. The 'maybe' is because the EULA is not very clear. I hope it will be more specific in future releases. My fellow Visual Studio Wizard wrote a T4 editor for VS 2...(truncated)...
Overriding file contents in an ASP.NET 2.0 application using Virtual Path Providers
(Indexed 2006-03-21):
After reading Victor's article about Virtual Path Providers I thought it was a very cool technology and that it was possible to do very interesting things with it. One of the things I wanted to try was to be able to kind of override a single file in an asp.net application in a specific installation of the web app. If you are using a code generation tool for the ASP.NET presentation layer, it's very possible that you will want to radically change some of the generated files, and leave the rest a...(truncated)...
RubyOnRails-esque ASP.NET
(Indexed 2005-12-14):
I've been playing with Ruby on Rails, and there's a lot to like. There are some things that we won't be able to get while working in C#, but we could build some stuff to get closer. I know there are some people working on porting RoR to .NET but I prefer an approach that instead of porting it, it tries to take advantage of ASP.NET even if the framework is not the same. I think the ASP.NET compilation model (which actually compiles everything in runtime), Build Providers, DLinQ and C# 3.0 are a g...(truncated)...
DLINQ ASP.NET Build Provider and DLINQ DataSource
(Indexed 2005-12-14):
In the pnp Summit West there was a 'GotDotNet CodeSlam'. I've been thinking that DLinQ + ASP.NET 2.0 Build Providers could give us a very easy, rubyonrails-esque kind of programming, and driving back to the hotel I thought of the obvious way of mixing both. What I built for the CodeSlam (by the way, people did not seem to like it much, as it did not win any prize ;), but I still think it's cool), is a Build provider for DLinQ. Basically, you add a file with a .linq extension to the App_code fo...(truncated)...
ASP.NET 2.0 DataSet DataSource
(Indexed 2005-12-08):
Even if it's hard to believe, ASP.NET 2.0 DataSources don't have good support for typed DataSets. I blogged about that here, and now I wrote a DataSetDataSource to overcome this limitation. Read about it here [Image]
Test Driven Development vs working at the right level of abstraction
(Indexed 2005-12-05):
I like the idea of TDD. I think it could be a good fit for a part of the kind of development I do, but I still don't have the discipline it takes to start doing it. On the other hand, suppose we could write something like: throw NotEnoughInventoryException if Product.Inventory < 0; and we had a framework that ensured that the constraint will be checked in the right places (the UI, the business logic layer, the database, whatever). Let's suppose that framework is already built and tested by whoe...(truncated)...
