Published by

Comments

# re: I'm alive!

Monday, May 05, 2003 11:04 PM by Greg Robinson
welcome!

# re: I'm alive!

Monday, May 05, 2003 11:06 PM by Frans Bouma
Thanks, buddy. :) I'll add your blog to my list of links. :)

# re: I'm alive!

Monday, May 05, 2003 11:55 PM by Paul
Howdy, noticed your sig on GoT, welcome on board :)

# re: I'm alive!

Tuesday, May 06, 2003 12:05 AM by Frans Bouma
Heya Paul :D. I was looking for your blog but couldn't find it. Will add a link as well :)

# re: T-SQL Tip of the day

Tuesday, May 06, 2003 6:48 AM by Paul Gielens
This would be a nice LLBLGen 1 addition!

# re: T-SQL Tip of the day

Tuesday, May 06, 2003 7:12 AM by Frans Bouma
Yeah :) I was investigating some techniques to implement variable filtersets on resultsets (i.e. joined columns from one or more tables/views), for the O/R layer for LLBLGen v2. One of them was this technique, the other was a dynamic build query using parameters and build using a stringbuilder and then fed to a command. The stored procedure as shown above was slower than the dynamicly created query. I tested it with random input parameters, and the stored procedure couldn't keep up. That was an eyeopener though, so I'll include a dynamic query engine.

But LLBLGen v1.x can indeed win a lot with this, because the sole thing lacking in it is the ability to write custom selects on a combination of fields. With this technique that would be possible.

# Frans Bouma's blog

Tuesday, May 06, 2003 7:59 AM by TrackBack
Frans Bouma's blog

# re: T-SQL Tip of the day

Tuesday, May 06, 2003 11:37 PM by Paul
Any movent in the LLBLGen workspace?

# re: T-SQL Tip of the day

Tuesday, May 06, 2003 11:44 PM by Frans Bouma
Not that I'm aware of. some people joined lately but I haven't checked if they were very active. it goes as with most OSS projects: big plans by a lot of people, but a few really execute these plans.

# re: I'm alive!

Wednesday, May 07, 2003 1:59 AM by Eric J. Smith
Hey Frans! Welcome!

# re: I'm alive!

Wednesday, May 07, 2003 3:19 AM by Frans Bouma
Thanks Eric! You got a blog yourself I can link to?

# Emitter

Wednesday, May 07, 2003 4:03 AM by TrackBack
Emitter

# ShowUsYour-Blog!

Wednesday, May 07, 2003 4:28 AM by TrackBack
ShowUsYour-Blog!

# re: It's not all bizznizz apps

Wednesday, May 07, 2003 11:11 PM by Ridge
Just a little FYI, CsGL is not just for c#. One of the reason the new library's called something different is this reason. The new library being worked on is CLS-compliant as well as cross-runtime/platform. We've got some cool stuff coming down the pike. As always, as listed on my (sad) page, which is hosting the new library, I could really use some non-Windows testers.

# ISerializable

Thursday, May 08, 2003 3:54 AM by TrackBack
ISerializable

# re: Borland's prices are too high?

Thursday, May 08, 2003 6:31 AM by randy
I'd like to do perform a feature comparison before I made a judgement, but on its face I don't think $999 seems too high if the product features are that compelling.

Think of it this way- if you're a carpenter, how much do you pay for your tools over time? I know that the tools are extremely expensive, and that they are maintained and replaced over time as needed. What's the value of what you produce with those tools? For those of us working in software development, these are the tools we use as part of the trade, and the work that we produce with them justifies their cost to a large extent.

# re: Borland's prices are too high?

Thursday, May 08, 2003 11:40 AM by Ron Green
I just appreciate you addressing the HTML reformatting issue with MS. Be sure to post their response when it comes forth.

# re: Relationships

Friday, May 09, 2003 3:32 AM by Eric J. Smith
That's a big post Frans! :-)

# re: Relationships

Friday, May 09, 2003 3:40 AM by Frans Bouma
heh :) yeah, it turned out much larger than expected because I thought I had to explain some stuff before diving into what I wanted to say. :)

# ISerializable

Friday, May 09, 2003 6:30 AM by TrackBack
ISerializable

# re: XPath in T-SQL?

Saturday, May 10, 2003 4:43 AM by Jon Galloway
I have to disagree - while I'm very worried about CLR code showing up in SP's, I think pattern matching is a natural extension of SQL and a welcome extension. Like SQL, XPath is used to define "what" I want (declarative), rather than "how" to do what I want (procedural). The WHERE clause is used to filter records, and becomes much more powerful if it can match on addresses with apartment numbers, text fields containing URL's, etc. I very much agree that procedural constructs in SP's is a bad paradigm mix, but SQL has long needed some improved pattern matching abilities.

# re: Relationships

Saturday, May 10, 2003 5:36 AM by Eli Robillard
There is a solution to your first woe: denormalize for performance.

What is the difference between maintaining an OrderCount property in a Customers object (or OrderExists, or whatever it is you want to record about the relationship), and providing a field in a Customers table with OrderCount?

If you don't like the performance hit of traversing Orders, then don't. Denormalize for performance.

Your complaint about using intermediate tables: "which entity is this intermediate table representing? None..." shows either a basic misunderstanding of abstraction, or a double-standard, as you don't seem to have a problem with the concept when OO-methods do it.

Yes, a relationship is an entity -- an abstract entity. (Note, "abstract" is used with its common English definition here, not the OO definition.) Not every table which defines a many-to-many relationship entity contains additional fields describing the relationship, and this does not make the relationship's abstract reality a "bad thing" in any way.

Hiding the reality of the relationship entity, or giving it less "value" as a real thing to be considered in design is a mistake.

Then, happily your CMS example discusses the real differences between object and relational data models. For a given situation, one will provide a more efficient representation than the other. And once you commit to one or the other, translating back and forth is a rough boundary to cross, best avoided if possible. These are the points that need to be blogged and taught until everyone knows 'em.

Since your point was not to write about the merits of the relational model, it is understandable that you did not include an example where the storage and retrieval inefficiences of the object model make it a worse choice than the relational model.

The real solution is to understand both approaches well enou

# re: XPath in T-SQL?

Saturday, May 10, 2003 12:31 PM by Jesse Ezell
I have to disagree as well. XPath comes because of the XML support in Yukon. Apart from that it doesn't make a ton of sense, however, you definately don't want to query xml data with T-SQL... because T-SQL is designed for RDBMS systems, not xml.

# re: XPath in T-SQL?

Saturday, May 10, 2003 8:51 PM by Frans Bouma
If they use it solely to add new predicate clauses to the WHERE clause, indeed to filter out rows matching the single XPath clause, it is ok to me, however the usage of XML as a storage form, requires the existence of XSL and XPath to work with the XML, and I do not see how these two can be mixed with T-SQL.

# re: Relationships

Saturday, May 10, 2003 8:58 PM by Frans Bouma
The problem I have is about the very different ways of how relations are physically stored in the database: via foreign key constraints, via combinations of constraints, via check-constraints, via instead of triggers etc. While you can store relations ALWAYS via a separate object which holds the complete information about the relationship, which entities are involved, which attributes participate in the relationship etc. You then eliminate the necessitiy of intermediate tables plus f.e. the necessity of needing f.e. combinations of constraints or the addition of attributes which serve no meaning. Intermediate tables which formulate the m:n relations (like non-obvious intermediate tables like 'Orders' in Northwind which defines the m:n relation between Employees and Customers) can be entities, but are necessary to formulate a relation between two OTHER entities. That's weird. You'd like to define that relationship with only the two entities involved, since these entities have the relationship.

# re: XPath in T-SQL?

Monday, May 12, 2003 2:44 AM by Teun Duynstee
As you say, XPath is a pattern matching language, so it is a natural fit for using in the where clause. It is not functional at all. XSLT is (although some disagree), but XPath isn't.

What the MS plans are for merging OO code with XML and RDBMS paradigms is still unclear to me as well, but this article might shed some light: http://www.research.microsoft.com/~emeijer/Papers/oopsla.pdf

I do not expect this kind of technology in the Yukon release though.

# re: 'You want a Dataset with that DAL, sir?' 'No, thank you.'

Tuesday, May 13, 2003 2:15 AM by Jesse Ezell
Even with a data reader, you will end up caching data in memory at some point along the line (whether it is in your own objects, the UI, etc.). Not using the DataSet does little to solve this problem. What it all boils down to is that there isn't any really easy way to get around the concurency issue in a disconnected environment.

DataSets are very cool. ObjectSpaces, which are built on top of the DataSet (at least at the time of the last preview), will let you do the same types of things (and much more) with objects and show just how cool the DataSet is. Still, I do agree that the DataSet is not suitable for a complex domain model. Custom objects always win out there (but again, they must cache state in the same way that the dataset does...it is just a pain to write all the extram code).

# re: 'You want a Dataset with that DAL, sir?' 'No, thank you.'

Tuesday, May 13, 2003 2:42 AM by Andres Aguiar
Jesse is right. The only way to prevent having an inconsistent state in your copy of the data is to lock it after you read it, let the user change it, and then commit it. If not, you'll always have to deal with an optimistic concurrency conflict in your application, regardless if you are using DataSets or any other persistence layer.

The persistence layers you mention can solve the issue if they are the only AppDomain accessing the database. If you have two AppDomains accessing the same database, you have the same problem. If you have two processes, or a server farm, you'll have the same problem. If you are using only one AppDomain to access your database, then you could tell that to the persistence layer so it caches it more agressively, but it will be a deployment-time optimization. You will still have to deal with optimistic concurrency issues in you code, because you'll will want it to scale to multiple appdomains...



# re: 'You want a Dataset with that DAL, sir?' 'No, thank you.'

Tuesday, May 13, 2003 2:53 AM by Frans Bouma
Caching in ANY form is an issue, and you always have to take into account that when you read data on a given time T, the microsecond after that it can be changed by another thread. Indeed, if you do not want that, you should lock the row, not helping performance.

DataSets however give you the feeling they take care of this, which they don't (in full). The problem is that they make it easier for the developer to work in a stateful way with data cached in memory than f.e. the DataReader approach does. If you need to update a userrow f.e. you can simply execute an Update statement on the database, or update a cached userrow in a dataset, then persist it. THe latter will probably not work well in an environment with heavy changing data.

Andres: your example of the webfarm and the multiple appdomains is a good one.

I'm not against the usage of a dataset as a datacontainer between tiers, however if you use it as an equivalent of Fowlers UnitOfWork, it gets a little tricky.

# re: 'You want a Dataset with that DAL, sir?' 'No, thank you.'

Tuesday, May 13, 2003 6:23 AM by Paul Gielens
I found working with a timestamp column very helpful. See "Distributed Concepts and Design, Addison Wesley". A must have book for enterprise developers.

Good post Frans, to bad lots of people (even on dotnetweblogs) seem to be indoctrinated by MS's marketing strategy and refuse to dig in on this issue.

# re: 'You want a Dataset with that DAL, sir?' 'No, thank you.'

Tuesday, May 13, 2003 8:05 AM by Andres Aguiar
If you are trying to use DataSets as a global caching mechanism then you are right, they are not good for it.

If you use them as a container for Business Entities instances, for example an Order, when you retrieve one, change it offline, and then persist it, then they work great.

I don't want to just execute an update statement to persist the data because I won't have optimistic concurrency, I'll have to build it myself.

They are also good when you want to cache mostly read-only data. If you have an ASP.NET app that uses DataReaders for filling grids, you'll have better performance than using a DataSet. If you then want to cache that data in a middle tier, or in the asp.net tier itself, then you'll have to change your app.

If you bind to a dataset, you'll have worse performance in the web server (the same in the database server), but you can add caching for read only data very easily, and that will imply a great improvement in the overall performance/scalability of the application.

# re: Stored Procedures vs. Dynamic Queries.

Tuesday, May 13, 2003 9:56 PM by Paul Wilson
Nice research. I guess now I'm still wondering my I shouldn't make the next leap and go with an O/R mapper all the way? A few months ago I would have said no way, but then again I was convinced that sprocs were the way too. So please more enlightening posts like this last one instead of the endless debate on the forums. Thanks.

# re: Stored Procedures vs. Dynamic Queries.

Tuesday, May 13, 2003 10:17 PM by Frans Bouma
Paul, a MONTH ago I would have said: "Stored procedures are the way to go". However, there are times in life when you face the results of choices you've made, you don't like what you see, you suddenly know you made the wrong decisions. I've to admit I've spend 2 months developing a visual stored procedure designer for my generator just to meet the requirement to first generate stored procedures, and then generate call classes for these stored procedures. These 2 months were a total waste of time, because it is a) undoable to write a decent visual stored procedure designer without forcing the user to write SQL statements, and b) it will result in time-consuming work because the use has to design EVERY SINGLE action he wants to perform on the database in a stored procedure. For CRUD operations, that's easy. But what do you do when you have 3 foreign keys in your table and you want to have several delete stored procedures based on any combination of these foreign keys? That's 6 stored procedures if I do the math correctly :) Not a pleasant sight with a lot of tables.

I think the debates on the forums did help me find another way out of this by going the other way around, which ended up in tiny pieces of code which produce on the fly what is needed. If you set it up in a way that the small statements use factories which produce agnostic objects with db specific code INSIDE them, you have very portable code (just change the factory).

So I won't say the 'endless' debates on the forums are not worth it, I think they are. Every developer thinks on a given point in time they know what's best in a given situation. During debates on forums you learn other peoples views, and they will probably not enlighten you on the spot, but will work through in your work in some way, I'm sure of it (either by strengthen you in your believe you're right, or in a realisation you're wrong so you can change your way of doing things).

If you wa

# re: Stored Procedures vs. Dynamic Queries.

Tuesday, May 13, 2003 10:20 PM by Frans Bouma
(the comment got clipped)
If you want to write all the logic by hand, there is NO WAY an O/R mapper can help you. O/R mappers, and related generators, are ment to generate common code based on a database scheme / input parameters and using a set of choices which might be the ove rall best. But NO O/R mapper will ever beat a handwritten, handoptimized DAL with stored procedures for every single possible query with a combined calling mechanism which is smart enough not to get data when it shouldn't. Like John Carmack will never b e able to deliver a generic 3D engine which will perform top notch in every single 3D game possible.
<br>

<br>
So, if you are aware of the compromises taken, you can then start looking at the advantages of using a ready-to-roll framework over writing it all by hand and check if the advantages are outweighting the disadvantages related to the compromises taken. W ith a solid O/R mapper or related generator, I'm pretty sure the ready-to-roll framework is well worth it.

# re: Stored Procedures vs. Dynamic Queries.

Tuesday, May 13, 2003 11:36 PM by Paul Wilson
So are you basically saying your next version will be an O/R mapper instead of a code generator? If not, then my question is still why your code generation approach (but without the sprocs) vs. something like EntityBroker?

Thanks for your time.

# re: Stored Procedures vs. Dynamic Queries.

Tuesday, May 13, 2003 11:47 PM by Frans Bouma
It will be both. It will generate code which utilizes a common framework, the code generated will be focussed to work with entities and collections of entities (Like 'Customer' and all code to handle the entity customer).

It will also allow you to generate lists, like order + orderdetails, some people like to use. These lists are pre-generated (the code to deliver you the list), can have filters, are typed (its a typed datatable) and can originate from an existing stored procedure (or not). It will also allow you to generate dumb datatable lists, if you want these. This last category can also be generated on the fly, using code and the same dynamic query engine, by the developer.

I generate code, but not all code necessary is generated. A lot is precompiled in an assembly, like all O/R mappers use. The reason I generate code is that I wanted to make life easy for the developer: thus in a gui he designs the usage of the O/R mapper, the O/R mapper is then created for the developer. The developer doesn't have to add a single attribute to work with the code. Also the generator does an extensive analysis of the database schema, so m:n relations are embedded directly into the Entity classes. (So for northwind, you'll get Customer.GetEmployees(), which in fact is an m:n relation via Orders. ).

EntityBroker requires you to write a lot in attributes, I generate this out in code. THere is not that much difference.

# re: Stored Procedures vs. Dynamic Queries.

Wednesday, May 14, 2003 12:13 AM by Jimmy
Hi Frans,

Just out of curiosity, did you run the test with specific stored procedures too, instead of the generic one?

I understand that that wasn't a realistic option in your opinion, but I'm still curious regarding the result.
:-)

Best Regards,
Jimmy
###

# re: Stored Procedures vs. Dynamic Queries.

Wednesday, May 14, 2003 12:21 AM by Frans Bouma
:) No I haven't. I did however profile the difference in speed between a stored procedure with optional parameters and a stored procedure tailored to one single filterset and the optional parameter one was much slower, since the optimizer can't optimize away a filter on a column even when the parameter is optional.

I have to test it extensively to say anything about the speed between dedicated stored procedures and dynamic queries (thus in the case of 3 foreign keys which are a possible filter, you have to write 6 stored procedures and then select one of them to run the query of that moment), but I don't think they'll be much faster than the dynamic queries (the dynamic queries have to be build up each time which takes some time, network speed can be a factor when a high amount of queries is executed), based on f.e. the books online documentation of SqlServer 2000.

Hand-optimized stuff is always the prefered way of doing things when performance is absolutely a matter of life and death. So is assembler. Neither one of them is recommeded in day to day applications due to the hard way of maintain such code.

# re: Stored Procedures vs. Dynamic Queries.

Wednesday, May 14, 2003 12:27 AM by Jimmy
I got an error so I try again...

It would also be interesting to see how dynamic SQL in a stored procedure would perform compared to the other options.

Best Regards,
Jimmy
###

# re: Stored Procedures vs. Dynamic Queries.

Wednesday, May 14, 2003 1:27 AM by Paul Schaeflein
Frans,

If I understand correctly, your dynamic query generator will run against JET -- which is used a lot in shared hosting environments. (Not everyone wants to pay for SQL Server.)

That would be very nice indeed...

# re: Stored Procedures vs. Dynamic Queries.

Wednesday, May 14, 2003 1:53 AM by Frans Bouma
Paul Schaeflein,

I do understand that shared hosting environments sometimes offer access database support as the only support for databases, however I firmly believe that access is not the way to go for n-tier applications. Access is a single-user toolkit for applications which need a (small)database. Other applications can better target databases which are ment to perform in a multi-user environment. If they do not want to pay for a database, MSDE is there to the rescue.

The generator works with database drivers and database specific generators. In theory it's possible to write a driver for JET and thus a query generator for JET, however that's not planned. (It will not be that much work however).

# Frans Bouma's blog

Wednesday, May 14, 2003 4:24 AM by TrackBack
Frans Bouma's blog

# Andres Aguiar's Weblog

Wednesday, May 14, 2003 4:24 AM by TrackBack
Andres Aguiar's Weblog

# re: Stored Procedures vs. Dynamic Queries.

Wednesday, May 14, 2003 8:55 AM by JimS
Also, what are the trade-offs in a large system. For example, one with 200+ tables (or how about one with 1000+ tables), 3 Sprocs (INSERT, UPDATE, DELETE) per table plus 1 more Sproc for each type of search per table. At this point, with at lesat 1000 Sprocs, even in the optimized world of specialized sprocs, how many would actually be kept in memory, as compared to how many would be dropped out and require a recompile each time they are used? Just some food for thought...

# re: Stored Procedures vs. Dynamic Queries.

Wednesday, May 14, 2003 7:39 PM by Mike Woodhouse
I'm not proposing to agree or disagree with your premise (I rather suspect that I'd have a foot in both camps, in fact) but I did wonder about the validity of the benchmarks.

Firstly, did you try using the "WITH RECOMPILE" option when you created your stored proc? As you'll probably know already, this gets round (at a cost per execution) the inappropriate query plan problem. In fact, with optional search criteria that might influence the query plan I'd say it was essential.

Secondly, to echo a previous comment, did you try building the specific SQL string required in the stored proc and using "exec"? I would expect similar response times to dynamic SQL since the query plan must now be generated fo each execution.

A third option might be to use a 'master' stored proc to accept the optional parameters and then pass control to 'sub' procedures that contain queries that are not hampered by the optionality. Of course, we're starting to run the risk of substantial duplication at that point, with increased maintenance costs becoming a potential downstream problem.

I think I might be inclined towards the dynamic route in order to be able to exercise better control over the duplication issues.

Assuming execution times can be equalised, the remaining issue may be in the area of access control. There may be benefits to be had from restricting table access to stored procedures, perhaps because of referential integrity concerns.

# re: Stored Procedures vs. Dynamic Queries.

Wednesday, May 14, 2003 7:50 PM by Frans Bouma
Mike:
The execution plan is the same with every input, this is because the stored procedure uses the same code. Check the stored procedure in the linked blog. Specifying 'With Recompile' would slow down the execution without any benefit.

Building strings INSIDE a stored procedure is even slower and not an option. T-SQL is not ment to be doing string contatenations, and it also kills the caching of execution plans, because you can't re-use execution plans based on parameters (allthough sqlserver tries to replace hardcoded values with parameters).

The Dynamic queries ARE parameterized. Therefor the queries will re-use execution plans (there are 6 execution plans possible with the test done: 3 foreign keys, 6 combinations). The dynamic queries were not created using the concatenation of the values in the query, but using parameters.

Delegating the call to other stored procedures inside a stored procedure wouldn't have helped either, I can do that selection in C# too, avoiding slower T-SQL execution code. The point was: is it worth it to do this:

1) create 6 stored procedures (which are fast)
2) create 1 stored procedure with optional parameters (which is slow(er)
3) create dynamic queries with parameters (thus in the end 6 of them).

1) is probably one of the fastest, but requires 6 stored procs in our situation for that particular table. Not that nice. 2) is slower than 3) so 3) is IMHO the best choice.

About access control: I read that more and more, but it's hot air. I'll try to explain why later on.

# re: Serious ASP.NET Editor flaw lives on in VS.NET 2003

Thursday, May 15, 2003 12:06 AM by Ron Green
Maybe as an interim solution they could fix the problem in the upcoming release of the Web Matrix.

# re: Stored Procedures vs. Dynamic Queries.

Thursday, May 15, 2003 1:47 AM by Richard Tallent
Good work! I just posted my thoughts to my blog (linked to my name above) rather than spilling them here...

# Frans Bouma's blog

Thursday, May 15, 2003 5:19 AM by TrackBack
Frans Bouma's blog

# Frans Bouma's blog

Thursday, May 15, 2003 6:01 AM by TrackBack
Frans Bouma's blog

# re: VS.NET 2003 isn't all that bad (sort of)

Saturday, May 17, 2003 9:33 PM by Zef Hemel
But still no refactorings? No "extract method", "rename method", "move method", Renaming a variable in one place and renaming them everywhere in it's scope automatically? Those are things I can't hardly live without since I've been using Eclipse for Java developement. And *might* even be a reason why I keep using Java although I'd prefer C# as a language.

# re: VS.NET 2003 isn't all that bad (sort of)

Saturday, May 17, 2003 9:40 PM by Frans Bouma
No refactoring functionality. I heared C# builder of Borland (to be released this summer) will have refactoring-functionality. Refactoring is something that is not considered 'useful' in the MS community, since it is a tool necessary by people who think while they write code (like in the eXtreme Programming world). So "if you design your software well enough, you don't need refactoring". I agreed with that for a lot of years. At the moment I'm doing a lot of designing while I write the code, and refactoring would help a lot in this case.

# re: #define debugging testing

Sunday, May 18, 2003 12:42 AM by SBC
http://dotnetweblogs.com/sbchatterjee/posts/7189.aspx

# re: #define debugging testing

Sunday, May 18, 2003 1:14 AM by Simon Mourier
I do agree with what you write, and I maybe confusing bugs (they are all bugs after all!), but I think I can solve 99% of all bugs just tracing things. That's for my personal case.

I also wanted to point that in real world (at least the world I live in ;-) scenario, average developers spend way too much time in the debugger than they should, and this just costs a whole lot of money to projects, in terms of productivity.

# re: #define debugging testing

Sunday, May 18, 2003 1:21 AM by Frans Bouma
Tracing can be a tool to find code error bugs, why not? It shows you the state on a given line and you can do that with printf's or looking at a locals window in a debugger ;)

I agree that way too many developers simply do not know what debugging is really about. If a method deep down the call chain is probably not good, they do not know that because they never tested the methods calling the code either on pre-/post conditions, fire up a debugger, break at the start of the call chain and step ahead till doomsday not knowing where to look for because they do not use their head.

# SBC DotNet Weblog

Sunday, May 18, 2003 7:29 AM by TrackBack
SBC DotNet Weblog

# re: ISV's: do NOT upgrade to Visual Studio.NET 2003!

Tuesday, May 20, 2003 1:18 AM by Jesse Ezell
Very bad advice IMO. Use VS.NET 2003. The amount of time you save will be more than enough to deal with any of these issues.

Here is the classic Early Adopters article about framework versioning:

http://www.3leaf.com/default/articles/ea/SBS.aspx

.NET was designed to support versioning, the solution is not ignoring versioning, but learning how to properly use it.

# re: ISV's: do NOT upgrade to Visual Studio.NET 2003!

Tuesday, May 20, 2003 1:24 AM by Frans Bouma
Then please help me in this situation, since I can't think of any real solution. How am I going to FORCE versioning onto developers using visual studio.net 2002? I can only tell them to use the assemblyBinding tags in their own config files otherwise it WILL NOT WORK.

If this visualstudio.net 2002 user is not developing an executable but also a library (based on your library), he TOO has to tell HIS customers to include the assemblyBinding tags otherwise the code will NOT WORK.

All versioning is focussed on UPWARDS compatibility. However no-one is talking about .NET 1.1 assemblies which are used in .NET 1.0 environments.

# re: ISV's: do NOT upgrade to Visual Studio.NET 2003!

Tuesday, May 20, 2003 1:47 AM by Frans Bouma
*dang* wrong quote :)
[quote]
Adopter:

This works both ways. If you’ve built a v1.1 component, there’s nothing to prevent a developer from referencing it from a v1.0 application. In this case, your v1.1 component finds itself running on the v1.0 Framework. This situation is more dangerous than the reverse, as there’s the potential that your component uses something that doesn’t even exist in v1.0. If this is the case, expect a “missing method” exception.
[/quote]
I tested this and this is not true (see error listed in the blog). My 1.1 assembly is not run against the .NET 1.0 install on the machine even though the .exe file is compiled on that same machine using csc v1.0.3705.288, thus .NET 1.0.

# re: ISV's: do NOT upgrade to Visual Studio.NET 2003!

Tuesday, May 20, 2003 1:57 AM by Paul Schaeflein
If you have both frameworks installed, can you compile using the command line in the 1.0 environment?

# re: ISV's: do NOT upgrade to Visual Studio.NET 2003!

Tuesday, May 20, 2003 2:04 AM by Frans Bouma
Yes you can, you can manually compile against whatever framework you want. An ISV can opt for that route as well, however this can be cumbersome also when the set of assemblies have dependencies etc so you have to write NAnt files to build manually. It's not an easy situation, and I think not a lot of ISV's have thought about this, I for one hadn't until I tested it this morning and discovered I made a mistake upgrading to VS.NET 2003, even if the editor is much better and very helpful.

# re: ISV's: do NOT upgrade to Visual Studio.NET 2003!

Tuesday, May 20, 2003 2:21 AM by Thomas Freudenberg
At CodeProject there's a tool converting projects and solutions from VS.NET 7.0 to VS.NET 7.1 and vice versa:

http://www.codeproject.com/useritems/vsconvert.asp

# re: ISV's: do NOT upgrade to Visual Studio.NET 2003!

Tuesday, May 20, 2003 2:24 AM by Jack
In VS.NET 2003 IDE, you can choose which framework to compile against.

Project Properties -> Build -> Supported Runtimes -> Change

# re: ISV's: do NOT upgrade to Visual Studio.NET 2003!

Tuesday, May 20, 2003 2:29 AM by Frans Bouma
[quote]
In VS.NET 2003 IDE, you can choose which framework to compile against.

Project Properties -> Build -> Supported Runtimes -> Change
[/quote]
Only for .exe projects, and also this adds assemblyBinding tags to the .config file of the .exe project. You can't set this information on f.e. C# class library projects. VS.NET is also not compiling with .NET 1.0 if you select it in that dialog, it will compile using .NET 1.1, it will only change your app.config file so the compiled .exe uses .NET 1.0 because all referenced system assemblies are redirected to .NET 1.0 versions. This works ok.

THomas: thanks, can be a life saver in supporting multi-platform applications.

# re: 'You want a Dataset with that DAL, sir?' 'No, thank you.'

Tuesday, May 20, 2003 3:29 AM by Sasha
Great article! Thank you! And thank you for your answer on the newsgroup.

# re: ISV's: do NOT upgrade to Visual Studio.NET 2003!

Tuesday, May 20, 2003 4:33 AM by JimS
again, I'm missing something here. .NET 1.0 is to DirectX 8.0 as .NET 1.1 is to DirectX 9.0. Get the drift? Just make the change and people will follow and soon enough no one will care about .NET 1.0, as they will all WANT to have 1.1 installed and running (and this includes those developers 'stuck' in VS.NET 2002 land)...

# re: ISV's: do NOT upgrade to Visual Studio.NET 2003!

Tuesday, May 20, 2003 5:17 AM by Frans Bouma
Oh yeah, great selling argument: "You can use this software only with visual studio.net 2003. If you have still visual studio.net 2002, please upgrade.". :) I don't think that's gonna work.

# re: ISV's: do NOT upgrade to Visual Studio.NET 2003!

Tuesday, May 20, 2003 6:19 AM by Phil Weber
Frans: What about using a third-party IDE, such as SharpDevelop or C# Builder, to compile your release build?

# re: ISV's: do NOT upgrade to Visual Studio.NET 2003!

Tuesday, May 20, 2003 8:01 AM by Sam Gentile
This is horendous advice. .NET fully supports Sxs versioning and assemblies. You need to figure out how to use it properly. See the Early & Adopter article, read about publisher policy files, etc but *don't* write riduclous stuff like "ISV'sL do NOT upgrate to Visual Studio .NET 2003!" Not only does it look bad for you but it looks bad for this site (of which many .NET people have been pointing out how much totally incorrect and bad advice is given out daily).

# re: ISV's: do NOT upgrade to Visual Studio.NET 2003!

Tuesday, May 20, 2003 8:08 AM by Stephen Fulcher
You can’t **compile** against either framework version, but that you can use the <supportedRuntime> and/or <bindingRedirect> elements to run in either environment, assuming you don’t have dependencies. When we say compile against X, what we are really saying is that the compiler stamps the X version in the assembly metadata for the referenced version, which is the one the CLR tries to load unless redirected in the config files. Any code compiled in 2003 will target by default 1.1, but can be redirected using the configuration files. If you want to redirect to 1.1 from 1.0, you use the <supportedRuntime> element. And, if you want to go from 1.1 to 1.0, you use a slew of <bindingRedirect> elements. All of the VS.NET 2003 UI (C# and VB) to target runtimes creates the config files, but still stamps 1.1 versions in the assembly metadata. So, if you want to target 1.0 with code you wrote in 1.1, just add a section to the app config file. If you're an ISV, you probably have a setup process. Why can't you write this into your setup? Seems to be no big deal to me. What other software platform let's you upgrade without recompiling in a cleaner way?

# re: ISV's: do NOT upgrade to Visual Studio.NET 2003!

Tuesday, May 20, 2003 8:11 AM by Frans Bouma
Sam: the early & adopter article is not mentioning class libraries. If you are selling class libraries, you are falling into this pitfall. It is NOT ridiculus advice, since I *AM* now in this situation and I *CANT* fix it, unless I go back to visual studio.net 2002 or compile the sourcecode by hand for 1.0, or supply the assemblyBinding tags and *HOPE* my customers are going to include it in their config files.

Do you know a solution then? I don't. You can say "It's horendous advice", but what are my options? I'm delivering a set of class assemblies to customers, who can (and probably will) use Visual Studio.NET 2002. I *CANT* compile these with .NET 1.1 because these will give them serious errors, unless they include the assemblyBinding tags in their config files. I've tested this today. I lost a complete day to test what I can do, and didn't find a solution. Therefor I posted this article.

If people are OFFENDED by this, I'm sorry, but it's the clear hard reality for SOME ISV's.

I also do not see why it would look bad for me. I warn other people to think twice before they move to vs.net 2003.

So Sam, as an invitation, please offer me a solution so I can fix this properly. I don't see one. Requiring customers to buy visual studio.NET 2003 is ridiculus in itself, and I can't do much more. A customer with solely visual studio.net 2002 is not focussed to include redirects for .net 1.0, because he never had to. *THATS* the issue. Who is paying the bill for all the supporthours my people have to give customers because they can't run the code they bought? Should I do something to my code to make this easier? If I can, please tell me. I don't know what.

# re: ISV's: do NOT upgrade to Visual Studio.NET 2003!

Tuesday, May 20, 2003 8:12 AM by Sam Gentile
when I said "this site", I meant "dotnetweblogs as exhibited by the main feed" fyi

# re: ISV's: do NOT upgrade to Visual Studio.NET 2003!

Tuesday, May 20, 2003 8:18 AM by Frans Bouma
Stephen: if I was selling solely a .exe, it wouldn't have been a problem. The problem is with the class libraries. I can't supply them with a .config file (I wish I could).

It would have been really great if a class library compiled with vs.net 2003 and run by an application build with .net 1.0 would immediately use .net 1.0 assemblies. That would solve the problem. However this is NOT the case. Of course a customer can add the assemblyBinding tags, it's the solution that worked, however a customer has to add them. I didn't KNOW that. It's not mentioned anywhere that you have to add these tags to a .net 1.0 (!) application's .config file to make its class libraries (which are probably compiled with 1.1) use .NET 1.0 assemblies.

Because this is extra support trouble, extra trouble in codebases, it's wiser to keep the code in vs.net 2002, because this will keep you out of the trouble. I predict this issue will cause trouble for some ISV's. Now everyone is selling 1.0 versions, but this will change.

# re: ISV's: do NOT upgrade to Visual Studio.NET 2003!

Tuesday, May 20, 2003 8:19 AM by Sam Gentile
I am not going to do this with you. While I appreciate your fustration, bloggers here need to learn *not* to make grand denouncements of something. You didn't say "some". You said "ISVS: do NOT upgrade." So all ISVs should not upgrade? Surely *most* ISVs are not exhibiting this problem. Having a blog that is public conveys a responsibility for being accurate as well as posting content free of rants or grand pro/denoucnements. You get the lecture today because there is just so much of this going on in general on this site, and prominent .NET people and bloggers are starting to complain. 'Nuff Said.

# re: ISV's: do NOT upgrade to Visual Studio.NET 2003!

Tuesday, May 20, 2003 8:31 AM by Frans Bouma
If some 'prominent' .NET people have complaints about my blog let them contact me. I think that's the obvious way to do it. I haven't received *one* complaint besides some in these reactions here.

It's not just frustration, Sam. It's cold hard cash I'm loosing here, and no-one is paying it back because I made the decision to move to visual studio.net 2003 and I didn't know any better. If I can help others with a warning it would be great so others won't loose money over an obvious upgrade.

If I re-read the reactions on this blog, I see some good tips and some "this is bad advice"-replies. What's the problem? Is it BAD to tell the world Microsoft scr*ws developers over with their hardwiring platform targets in their IDE's? Apparantly. Good to know, so I can keep the blogs down to cheerio's for Microsoft's good deeds while keeping my mouth shut about their not so good deeds.

Yes, I'm offended now. I sincerely tried to fix this myself this day, I can't. Microsoft doesn't help me, I hope I helped some ISV's out there today so they make the right decision. If that's against the will of some 'prominent' .NET people, please let them contact me and perhaps they can HELP me with this.

I'm more than willing to type a long essay about every detail how to fix this, so I can say: "ISV's: it's safe to upgrade to visual studio.net 2003, read how".

# re: ISV's: do NOT upgrade to Visual Studio.NET 2003!

Tuesday, May 20, 2003 8:59 AM by Sam Gentile
Last post from me on this. Apparently, you still don't get the difference on "some" versus "all" and "giving good advice" versus saysing "ISVS: Do NOT." Do I have to spell this out any more clearer? I checked every word of what I wrote with Scott, and spoke to him and he was fine with it. Complaints is refering to not just *this* site but the high number of incorrect .NET information that shows up on the *dotnetweblogs main* feed from a number of blogs on dotnetwegblogs. Scott and I recieve complaints on it. I gave you good advice on how you could have blogged it and how to make a blog successful. You chose to ignore everything I wrote. It's your choice. This is all I am going to say on this.

# Loosely Coupled

Tuesday, May 20, 2003 9:25 AM by TrackBack
Loosely Coupled

# Frans Bouma's blog

Tuesday, May 20, 2003 9:25 AM by TrackBack
Frans Bouma's blog

# Frans Bouma's blog

Tuesday, May 20, 2003 9:25 AM by TrackBack
Frans Bouma's blog

# Robert McLaws

Tuesday, May 20, 2003 9:25 AM by TrackBack
Robert McLaws

# Robert McLaws

Tuesday, May 20, 2003 9:25 AM by TrackBack
Robert McLaws

# Robert McLaws

Tuesday, May 20, 2003 9:25 AM by TrackBack
Robert McLaws

# Robert McLaws - BoyWonder.NET

Tuesday, May 20, 2003 9:25 AM by TrackBack
Robert McLaws - BoyWonder.NET

# Robert McLaws - BoyWonder.NET

Tuesday, May 20, 2003 9:25 AM by TrackBack
Robert McLaws - BoyWonder.NET

# re: ISV's: do NOT upgrade to Visual Studio.NET 2003!

Tuesday, May 20, 2003 11:52 AM by Jamie Cansdale
I have been stuck having to compile my NUnitAddin project with VS.NET 2002 to ensure compatablilty with both. Yes I might be able to add redirects to devenv.exe.config but I don't think users would be very impressed. I have heard it is possible to compile against the 1.0 assemblies in VS.NET 2003. It would just take a while to manually change them all. I've just written a snippit of code to change all assemblies in a solution to be the 1.0 versions. If you've got NUnitAddin installed you can use 'Test With... VS.NET' on the following method. Put this code in the solution you wish to convert...

using System;
using System.IO;
using System.Reflection;
using System.Diagnostics;
using EnvDTE;
using Microsoft.Office.Core;
using VSLangProj;

public class SolutionConvert
{
public static _DTE DTE
{
get { return (_DTE)AppDomain.CurrentDomain.GetData("DTE"); }
}

public void BuildWith_v1_0_3705()
{
foreach(Project project in DTE.Solution)
{
VSProject proj = project.Object as VSProject;
foreach(Reference reference in proj.References)
{
string assemblyPath = reference.Path;
string assemblyFileName = Path.GetFileName(assemblyPath);
string frameworkDirectory = Path.GetDirectoryName(assemblyPath);
string frameworkVersion = Path.GetFileName(frameworkDirectory);

string newFrameworkVersion = "v1.0.3705";
string newFrameworkDirectory = Path.Combine(Path.GetDirectoryName(frameworkDirectory), newFrameworkVersion);
string newAssemblyPath = Path.Combine(newFrameworkDirectory, assemblyFileName);

if(frameworkVersion != newFrameworkVersion && File.Exists(newAssemblyPath))
{
Debug.WriteLine(assemblyPath + " -> " + newAssemblyPath);
reference.Remove();
proj.

# re: ISV's: do NOT upgrade to Visual Studio.NET 2003!

Tuesday, May 20, 2003 11:53 AM by Jamie Cansdale
.References.Add(newAssemblyPath);
}
else
{
Debug.WriteLine(assemblyPath);
}
}
}
}
}

# re: ISV's: do NOT upgrade to Visual Studio.NET 2003!

Tuesday, May 20, 2003 4:22 PM by Scott Swigart
First, it's pretty easy to create separate VS 2002 and VS 2003 project files that point at the same source. Then you can work in VS 2003, and do your final build in 2002 (or you can set up a batch/makefile to do a command line compile).

Also, if you build an assembly from VS 2003, you can reference that assembly from a VS 2002 application just fine. You do not need binding redirects or policy files in this case. These come into play if you have a strong named component, and you want to replace it with a newer version (and you want everything redirected to the newer one).

# re: ISV's: do NOT upgrade to Visual Studio.NET 2003!

Tuesday, May 20, 2003 5:38 PM by Robert McLaws
Or, you can maintain 2 downloads and EDUCATE your developers on which one to use.....

# re: ISV's: do NOT upgrade to Visual Studio.NET 2003!

Tuesday, May 20, 2003 6:32 PM by Frans Bouma
Scott Swigart: did you try it? Of course you can reference it from vs.net 2002. It even compiles ok. It starts up even, but when you call a method in a class library build with vs.net 2003 from a .NET 1.0 application, AND that class library uses an assembly of .NET to do something (in short: something useful), it will crash with an exception that it can't load the right assembly (the 1.1 version) so your call will not succeed. I tried it, it fails.

Robert: maintaining 2 versions is nice, but what if I upgrade my own class library? Then I have to maintain 4 versions. Perhaps even 6 after another upgrade. I'll look into this, it might be the only solution which will not be a burden for my customers, if I implement it right in my generator.

# Frans Bouma's blog

Wednesday, May 21, 2003 4:27 PM by TrackBack
Frans Bouma's blog

# Loosely Coupled

Wednesday, May 21, 2003 4:27 PM by TrackBack
Loosely Coupled

# re: Microsoft gets Database Performance crown back!

Thursday, May 22, 2003 8:17 AM by Mathew Nolton
I used to work for a software vendor as an evangelist and we were primarily a microsoft shop. I can't tell you how many times I had to deal with anti-microsoft/pro-oracle battles. after a while i got pretty good at quoting statistics that dispelled a great deal of it. i think most of it has to do with good marketing on oracle's part.

slowly the myth is getting displaced.

-Mathew

# re: "Framework-Hell"-solution is here: ISV's can upgrade to VS.NET 2003 without pain.

Thursday, May 22, 2003 7:29 PM by Teun Duynstee
Thanks for the explanation. Would it be possible/easy to write a VS add-in that raises warnings at compile time of usage of a framework assembly of a higher version than x (x being configurable in the add-in). Even if it is indirect (your project referencing a third party assembly which references etc...)?

This would be really usefull.

# re: "Framework-Hell"-solution is here: ISV's can upgrade to VS.NET 2003 without pain.

Thursday, May 22, 2003 7:34 PM by Frans Bouma
It definitly would be possible, you have to walk reference chains using reflection, but how to implement it as a pre-compile add-in... I really wouldn't know :)

# re: "Framework-Hell"-solution is here: ISV's can upgrade to VS.NET 2003 without pain.

Thursday, May 22, 2003 9:32 PM by Victor Lindesay
Why not just set the supported runtimes in the project properties dialog.

Also once you have changed the references manually to 1.0 and then manually back to 1.1, the projects will revert to 1.0 on compile. You are stuck with 1.0!

# re: "Framework-Hell"-solution is here: ISV's can upgrade to VS.NET 2003 without pain.

Thursday, May 22, 2003 9:36 PM by Frans Bouma
Victor: you can't set that setting in class library projects. Try it, the setting is not there. (The setting is only available on .exe projects which will generate redirect tags to 1.0 in the .config file, no compile against 1.0 is done in VS.NET 2003 unless you hard-reference to 1.0 assemblies.

# re: Concurrency Control Methods. Is there a silver bullet?

Friday, May 23, 2003 11:35 PM by Jimmy Nilsson
Interesting...! I have to admit I usually say "Don't use functionality locking (your words) except when you really have too!" and that because of runtime efficiency. But this was a refreshing viewpoint!

To see it your way, how do you tune the solution so that the second user isn't kept from doing what he wants too, for longer time than absolutely necessary? I usually use a custom lock table for this and I use a time interval for when the lock isn't valid anymore and that way I deal with ctrl-alt-del, for example. Do you have a better solution to this?

Best Regards,
Jimmy
###

# re: Concurrency Control Methods. Is there a silver bullet?

Friday, May 23, 2003 11:50 PM by Dave
Interesting concept Frans. I see two places you need to detail out before this is realistically feasable.

The first thing you need to detail out is the 'lazy' user who will simply lock out others for long periods of time.

For example, say Joe selects the row that Jack wishes to modify first, but now Joe either goes for a cup of coffee or out to lunch, or gets called away for a dire emergency or just plain forgets to release the row for Jack to be able to use. Do we simply lock out Jack until somebody gives Joe a much needed kick in the butt? While software which tosses away a fraction of the work done is not a good thing, an even worse thing is software which slowly grinds work to a halt.

The second is scaling. Webservices are not needed in small scale systems. You can accomplish the exact same functionality in a simple two tier setup, avoiding all the inefficiency webservices would introduce. But in large scale systems, don't lose sight of reality. Yes, webservices work great, but now you also introduce physical distance also.

Sure, Joe could do the work Jack is and avoid duplication. Except Joe works in the corporate HQ in NYC. Joe is employed in HR and wants to alter John's home address so his next paycheck reaches him on time. Jack however, is John's manager and wishes to add change John's work extension ASAP because he's in sales and the website needs to pick up this change for new customers to reach him.

Now the question becomes who do we piss off first? Do we lose potential sales because a new customer can't reach our sales rep? Do we piss off John because his paycheck arrives late? Maybe we piss off Joe because we've now doubled his workload. Or maybe Jack because Joe left John's row locked while he left for lunch at noon - except it is 9am where Jack is.

And all because our 'more efficient' system won't allow two users to update two separate fields from the same row in our empl

# re: Concurrency Control Methods. Is there a silver bullet?

Friday, May 23, 2003 11:51 PM by Frans Bouma
It depends on your application. If you are using a webapplication frontend, you're stuck in the request-response paradigm, so there is no other way then to lock using the mechanism you describe (which is commonly used, f.e. in CMS-es).

Another scheme can be where you still have the lock-table where you store locks on functionality, but a service which manages the locks and communicates with clients bi-directionally. Clients will notify the service that they're freeing a lock and the service can then notify another client waiting in line to enable the functionality.

But indeed, wmost of the time you are forced to implement a time-period to the lock on the functionality as well. However, if the organization is organized well and the software streamlined as well, it shouldn't be very common that a user tries to start functionality that's locked by another user.

# re: Concurrency Control Methods. Is there a silver bullet?

Friday, May 23, 2003 11:53 PM by Dave
Damn... gotta learn to be more to the point! :-)

I wanted to end by asking if my concerns were legit because I do agree.... optimistic/pessimistic locking really doesn't cut it 100% of the time.

Interesting post Frans!

# re: Concurrency Control Methods. Is there a silver bullet?

Friday, May 23, 2003 11:54 PM by Frans Bouma
(My previous comment was targeted to Jimmy)

Interesting thoughts, Dave! How functionality locking is implemented can change from organisation to organisation. I can imagine a boss can overrule a lock on a given set of functionality or an admin can unlock a set of functionality at any given time, making the workflow continue. It is all about keeping the workflow going. If someone stalls it, it has to be tuned, both on the organisational side and on the software side.

# re: Concurrency Control Methods. Is there a silver bullet?

Saturday, May 24, 2003 1:10 AM by Paul Gielens
Frans, yet again... study the Fitch and Mathers sample. For what I can remember it provides a nice, solid, clean way to stop people from bashing the broker.

public enum Blah {
Pending = 0;
etc

Nice post... the writing style reminded me of your friend Fowler, to the core of the problem in mummy_understandable communicative language ;)

# re: Concurrency Control Methods. Is there a silver bullet?

Saturday, May 24, 2003 2:26 AM by Frans Bouma
Fitch & Mathers? hmm. Well like I said, it can be done on a lot of ways. I haven't looked into F&M a lot, but if they build in functionality locking, it's a nice real life example. :)

# Frans Bouma's blog

Saturday, May 24, 2003 6:53 AM by TrackBack
Frans Bouma's blog

# mads studentblog

Saturday, May 24, 2003 6:53 AM by TrackBack
mads studentblog

# Concurrency and Other Data Topics from Frans : IDunno

Saturday, May 24, 2003 6:53 AM by TrackBack
Concurrency and Other Data Topics from Frans : IDunno

# re: Concurrency Control Methods. Is there a silver bullet?

Saturday, May 24, 2003 10:24 AM by Jon Galloway
Great article, Frans! Reminds me of a Bill Vaughn quote - debating concurency resolution strategies is like arguing about where to stack the bodies after the accident, instead of putting up the traffic signals to prevent the accident in the first place.
<br>
Handling concurrency on the front end allows for some big optimization gains at update time, such as batch updates (in the case of editable datagrids, for instance, a user can be editing several rows at a time). My favorite strategy for that is to pass in all the update rows in XML, use OPENXML in a SP to dump them into a temp table, delete the old rows and add the new ones (all in a transaction). The same procedure can just as easily free the row locks when it's done.

# re: Why I think some people shouldn't use VSNET 2003.

Saturday, May 24, 2003 10:47 AM by Mike Sax
Frans, I think what you are saying essentially true, but only for Component vendors. If someone is writing a general app, then Visual Studio 2003 is preferable. I've posted some more details on my blog.

# re: Why I think some people shouldn't use VSNET 2003.

Saturday, May 24, 2003 7:46 PM by Frans Bouma
Mike: that's why I'm talking about libraries :). General app developers are also able to target 1.0 in vs.net 2003 by the .config generator in vs.net 2003 which adds redirect tags in the .config file, for .exe projects. :)

# re: Farewell, beloved Hungarian Coding.

Sunday, May 25, 2003 8:42 PM by Roland Weigelt
Don't throw it all away ;-)

While I love to use (more VB-style than hardcore C++) hungarian notation, I completely agree with Microsoft's view on how public stuff should be named. So all my public interfaces look the "Microsoft way", internally I use HN. Nice feature: Parameters are easy to spot inside the code of a method because it doesn't use HN unlike the other local variables.

Roland

# re: Farewell, beloved Hungarian Coding.

Sunday, May 25, 2003 8:45 PM by Frans Bouma
That's what I did for an hour of converting interface code (I have already thousands of lines of code of this library with HN, waiting any longer would only be stupid) but it doesn't look right to me. I see your point, however for myself it was harder to get rid of the habit to write HN code when I kept local variables HN style. It's a matter of getting used to I guess. after another hour of refactoring it doesn't hurt my eyes that much anymore. :)

# re: Farewell, beloved Hungarian Coding.

Monday, May 26, 2003 12:35 AM by Roland Weigelt
In the devteam I work in, everybody uses the mixed HN/non-HN approach. Comparing source code of other team members (with HN used internally) with sample code from the Web (no HN at all), I must clearly say that the code without HN is harder to understand (note that this is also valid for code that is not related to our everyday work, otherwise the comparison would be biased). The worst problem is finding the difference between local variables and private data members (if people don't use the "_thisIsPrivate" notation).

There is one huge advantage of HN that I don't see mentioned often in discussions: Intellisense. Typing the first characters and then invoking Intellisense will filter the entries shown in the drop down list very nicely (e.g. "m_" for all private members, "str" for all local strings, or "m_str" for all private string members). I even add a specific prefix for controls on a winform: "c_" (followed by a VB-style lvw for listview, lbl for label etc.).

# re: Farewell, beloved Hungarian Coding.

Monday, May 26, 2003 12:49 AM by Frans Bouma
If you want to do it totally correct, you should use this.memberVariable instead of just 'memberVariable'. It's a bit of extra typing, but makes it more readable IMHO (but because I'm now in HN-Rehab I'm not in that phase yet ;))

The intellisense argument is definitely true, in VB and C++ it's a real timesaver, however with the mixed api naming schemes in .NET it gets a bit messy IMHO, also with VS.NET 2003 the most used name is picked first, which saves you even more time.

Your point about the control prefix is a good one, if you look closely at MS' own contradicting documents they mention a prefix for a textbox or button control here and there. I'm not sure what I'll do about that, btnOK is very logical. Just having 'ok' as variable isn't telling me anything.

Also the different typed variables which are very closely related to a single item are now harder to formulate: sometimes you have 2 variables of different types holding the same semantic value in different type formats. You can do that easily with HN, you can't with this caMel/PasCal casing. I do get the feeling though you are forced to think deeper about a name for a variable, which is a good thing IMHO.

# re: Farewell, beloved Hungarian Coding.

Monday, May 26, 2003 2:27 AM by Fernando Tubio
> I had an input parameter 'iOperator'. You can't change that to 'operator' because that's a reserved keyword.

In C# you can escape reserved names with an '@', so you can define your parameter as @operator, and users of your library will see it as operator.

Fernando Tubio

# re: Farewell, beloved Hungarian Coding.

Monday, May 26, 2003 2:33 AM by Frans Bouma
hmm ok, didn't knew that, thanks. I think I stick with my new name for operator though. :)

# Frans Bouma's blog

Monday, May 26, 2003 5:14 AM by TrackBack
Frans Bouma's blog

# Chad Osgood's Blog

Monday, May 26, 2003 5:14 AM by TrackBack
Chad Osgood's Blog

# re: Concurrency Control Methods. Is there a silver bullet?

Monday, May 26, 2003 7:23 AM by Andres Aguiar
Are you suggesting to have something like pesimistic locking but without really locking the database? Like storing a row in a table that says 'I'm updating Customer #1'?

# re: Concurrency Control Methods. Is there a silver bullet?

Monday, May 26, 2003 7:33 AM by Frans Bouma
Yes, you use logic in your application to unlock / lock functionality in your application to perform operations. You can do this in a number of ways, f.e. in a table where you store 'locks on functionality' with a serialized transaction.

It takes some effort, but it pays off, the application will force you to focus on the organisational part of rolling out a software application which is where teh real benefits of software are found.

(similar problem: some developers complain about source control systems that they work against you when more than one developer wants to check out the same file. They forget why 2 or more (!) developers try to work on the same file, why isn't there 1 developer doing that work and they others doing other work so they prevent clashes/merge conflicts and other nasties)

# re: Concurrency Control Methods. Is there a silver bullet?

Monday, May 26, 2003 6:33 PM by Andres Aguiar
Mmm... I don't like it, it's a double edge sword....

What happens if a programmer 'forgets' to check the table? What happens if there is a totally different application that you cannot control that is using the same database?

The only way to implement it safely would be to use database locks, and we all know it won't scale.

I have some ideas, I'll blog on them as soon as I can find some time ;)

# re: Concurrency Control Methods. Is there a silver bullet?

Monday, May 26, 2003 6:43 PM by Frans Bouma
If you take into account what can happen when a programmer 'forgets' something he should do, any given example of good technology will fail. I don't see that as an argument. Locking parts of an application's gui or inner works because the current user is not allowed to work with it is not an easy way out, I admit. It's far easier to just let the database figure it out, which will lead to systems which are not that efficient (as I wrote). You don't need database locks. You can write a singleton which manages the 'locks'. RDBMS-es are not using different systems for managing their locks.

Using optimistic locking or similar to prevent concurrency problems is fighting the symptoms of badly designed software. It's better to design it RIGHT so concurrency problems are not an issue. If I might add: every major CMS vendor implements functionality locking, they lock in their guis editable items so other editors can't work on them while an editor is editing these items.

# re: Firebird .NET data provider v1.0 released

Monday, May 26, 2003 10:51 PM by Mathew Nolton
have you had a chance to work with firebird? With ms sqlserver becoming expensive ( 20K/cpu in a production environment? ), it provides an opportunity for a strong but much less expensive rdbms ( e.g. stronger than access and mysql ) to gain popularity.

i read the comments on the firebird site about the small footprint and fast transactions. i think i will have to download it and see what this new version is all about.

-Mathew Nolton

# re: Firebird .NET data provider v1.0 released

Monday, May 26, 2003 10:57 PM by Frans Bouma
Not with a recent version, I used Interbase a few years back but I don't think it's wise to compare that with todays firebird version. Like PostgreSQL, Firebird packs all the features you want (and more, it has iirc MVCC, which SqlServer lacks) from a database. I don't have the time at the moment, perhaps this weekend, to give it a testdrive. :(

If you've given it a testdrive, can you post/blog some thoughts about your experiences with Firebird? Thanks :) (so I can see if I should plan some time to dive into Firebird for my next generator toolkit or shouldn't)

# re: Firebird .NET data provider v1.0 released

Tuesday, May 27, 2003 2:13 AM by Carlos Guzmán Álvarez
Hello:

>so I can see if I should plan some time to dive >into Firebird for my next generator toolkit or >shouldn't

Oh!! if you mean to add Firebird support to LLBLGen this could be great!!!

For me Firebird is great, it's really stable and fast, and it has all features i need ( referential integrity, triggers, stored procs, transactions, ... ), really good admin tools, and it's multiplatform and .......... :D





Best regards
Carlos Guzmán Álvarez
Vigo-Spain

# re: Firebird .NET data provider v1.0 released

Tuesday, May 27, 2003 2:21 AM by Frans Bouma
Yes I mean support for Firebird in the next release, the O/R mapper variant LLBLGen Pro. I can't assure support via the initial shipment of the first version, but I can add support easily after that via a template/driver-addon update. Consider it on the 'essential items todo' list :)

# re: Don't try to re-invent the browser, please.

Tuesday, May 27, 2003 3:07 AM by DonXML
Did you see my blog on Serialized UIs? http://dotnetweblogs.com/donxml/posts/7441.aspx Have you read up on Avalon in Longhorn? Sure sounds like your vision is the same as mine, except the definition of a 'browser'. The line between WinForms and WebForms is being blurred by advancements in Longhorn.

DonXML

# re: Don't try to re-invent the browser, please.

Tuesday, May 27, 2003 3:18 AM by Frans Bouma
The 'browser' as an application should go away, iexplorer.exe should not live anymore. That's the idea I was talking about. This will not be possible with a flip of a switch (unfortunately ;) ), but if you ask me, I really do not see the relevance in the future for 2 'forms' namespaces, there is one gui: the desktop (or handheld or whatever).

I hadn't read your blog about serialized guis nor read about avalon (I only saw some screenshots on the windows supersite). What triggered me to write this blog was your remarks on how it should be rendering XML using namespace engines and the like. All neat, but that's not the problem, because with another rendercontrol it can be embedded in IE now. The concept should change, not which rendering engine should be used. (because to me XML is not about visualization, but about datastorage following a structured definition). But perhaps I'm missing something essential which will cause that what I think should be done will never happen :)

# re: Don't try to re-invent the browser, please.

Tuesday, May 27, 2003 3:32 AM by DonXML
We are on the same page, but our definitions aren't exactly the same. This is a new world, and until we get a standard definitions behind the ideas, that's bound to happen.

# re: Don't try to re-invent the browser, please.

Tuesday, May 27, 2003 3:35 AM by Frans Bouma
Hmm I think you're right.

I hope that the W3C isn't involved in next-gen webapplication gui definition standards though.

# re: Don't try to re-invent the browser, please.

Tuesday, May 27, 2003 3:56 AM by Heath
What the hell are you talking about? WinForms and HTML share something in common - developers must control the positioning of various UI elements, i.e. controls. IE *does* have them - the HTML Common Controls. You can even use them in your own apps...including WinForms. IE6 on XP with Visual Styles enabled does, however, bind to CC6, in which case the controls are actually the Windows Common Controls.

Why did GUIs starting hosting in web browsers like IE and Mozilla - because graphics representation has long-since evolved and the methodologies to do them really hasn't. IE already takes care of all the rendering with very little work by a developer to re-invent the wheel to display nice-looking GUIs. Comparing the easy layout capabilities of HTML to Curses is a joke! Sure there are problems when using HTML for your only GUI (InstallShield Developer and Microsoft Money come to mind) but those are overcome by writing simple ActiveX components and implementing your own hosting interfaces, which is still a *lot* easier than rewriting everything like that yourself.

The web is an evolving thing and if browsers don't evolve with it, then *we'll* be the ones re-inventing technologies. Isn't it better than a single organization does it, tests it, supports it, and basically implements a "standard" that everyone uses?

# re: Don't try to re-invent the browser, please.

Tuesday, May 27, 2003 4:00 AM by BTJ
This sounds eerily similar to the Java-applet view of the future we heard in the mid-90's.

# re: Don't try to re-invent the browser, please.

Tuesday, May 27, 2003 4:04 AM by Frans Bouma
Heath: yeah yeah, but I'm not talking about the LOOKS, I'm talking about functionality known for years in f.e. win32 and now winforms which are not possible (or better: are much harder to develop) in HTML if ever possible. I'm not talking about Foo Inc. and their 2 page website with a mailform, I'm talking about webapplications with sophisticated GUI's which are hard to develop in HTML using IE and easy to do in winforms. The main reasons: HTML is markup, not a gui definition language and HTML works disconnected, while it shouldn't.

BTJ: I'm aware of that it sounds familiar :) Java had the disadvantage that the internet was not as connected as it is today: people dialed in via modems, today they have cable or ADSL and are always online, which blurs the separation between apps running elsewhere and locally.

# re: Firebird .NET data provider v1.0 released

Tuesday, May 27, 2003 6:05 AM by Carlos Guzmán Álvarez
Hello:

> Yes I mean support for Firebird in the next > release

:D There any expected date for the release of the next version ??


Best regards
Carlos Guzmán Álvarez
Vigo-Spain

# re: Don't try to re-invent the browser, please.

Tuesday, May 27, 2003 7:21 AM by Joshua Hoover
Until Microsoft supports or makes an official statement regarding its position on projects like Mono, I would not count on the CLR and .NET to be a viable cross-platform development environment. Remember, the CLR may be an open standard, but the .NET framework is not. There is nothing stopping Microsoft from suing projects like Mono and DotGNU and that is enough to keep me away from thinking about .NET as a solid cross platform solution.

# re: Firebird .NET data provider v1.0 released

Tuesday, May 27, 2003 7:29 AM by Frans Bouma
"soon" :) I hope before august.

# re: Don't try to re-invent the browser, please.

Tuesday, May 27, 2003 7:40 AM by Kingsley Idehen
See my url, we are on the case!

# re: Don't try to re-invent the browser, please.

Tuesday, May 27, 2003 7:46 AM by Frans Bouma
Kingsley, cool :) I read somewhere the HWND issue is/was a bit of a problem with mono winforms, but if that's been fixed, I think mono will have a decent winforms implementation, which opens up a whole new ballgame :) Good stuff, Kingsley, keep up the good work :)

# re: Firebird .NET data provider v1.0 released

Tuesday, May 27, 2003 8:34 AM by Carlos Guzmán Álvarez
Hello:

Thanks and keep up good work :D





Best regards
Carlos Guzmán Álvarez
Vigo-Spain

# DonXML Blog

Tuesday, May 27, 2003 11:34 AM by TrackBack
DonXML Blog

# DonXML Blog

Tuesday, May 27, 2003 11:34 AM by TrackBack
DonXML Blog

# Read/Write Web

Tuesday, May 27, 2003 11:34 AM by TrackBack
Read/Write Web

# re: Don't try to re-invent the browser, please.

Tuesday, May 27, 2003 5:57 PM by Viking
You got some points but I don't think you could expect to see Winform support "all over" in some time.

If you only target Windows user with the latest Microsoft OS then Winforms is great. If you plan to target other users then web might be the way to go.

Also...the web is no longer meant for stateless applications. You got many ways for implementing persistence in most web application frameworks. However, the applications are much harder to develop on the web.

# Tim Berners-Lee

Tuesday, May 27, 2003 9:40 PM by bruce
Just for the record, Tim Berners-Lee made the first web browser... not Andreessen!

# re: Don't try to re-invent the browser, please.

Tuesday, May 27, 2003 9:49 PM by Frans Bouma
hmm, in that context, what *is* a browser then? since with gopher you also could traverse hyperlinks (sort of). Berners-lee did indeed invent a tool/format to hyperlink texts, however the concept of the browser as we know it today is not made by Berners-lee afaik, but by Andreessen and his team at NCSA.

# About the indenting...

Tuesday, May 27, 2003 11:01 PM by Jeroen
I think it removes the tabs if you choose to <enter> another line down because a lot of people (me included) dislike lots of whitespace on otherwise empty lines. If you want it to redo them when you move upward that could cause some really funky stuff when you're just cruising the sourcefile looking for something to copy and you see the cursor jumping around to each line's "next logical place to insert stuff" :)

I agree with the rest though, especially the compilation issues.

# re: My wish-list for the next Visual Studio.NET release

Tuesday, May 27, 2003 11:08 PM by Frans Bouma
Yeah, the whitespace is indeed a burden. However, the editor knows it should indent when hitting enter, the editor could simply look at the indentation of the line ABOVE the current line (if the current is empty). Ah well... :)

# JonGalloway.ToString()

Wednesday, May 28, 2003 5:51 AM by TrackBack
JonGalloway.ToString()

# re: Don't try to re-invent the browser, please.

Wednesday, May 28, 2003 5:53 AM by Simon Willison
Nope, TBL definitely bulit the first web browser as we think of it today. The team at NCSA just built a better one.

The reason people like myself are crying out for an update to IE is that it still doesn't support the current batch of standards to an acceptable level. It doesn't even support all of HTML yet (the <abbr> tag springs to mind), it's CSS2 support has a distance to go and the sooner they support alpha transparency in PNGs (which was standardised in 1996) the better.

I'm interested in the rendering engine, not the browser. As it is, I use Gecko engine browsers (currently Firebird) and can't really see myself moving back to IE even if its end user functionality (tabs, popup blocking, typeahead find and so on) caught up. It's just too convenient having a browser that I can install on any operating system I care to use.

# re: My wish-list for the next Visual Studio.NET release

Wednesday, May 28, 2003 7:28 AM by DM
Your list is great! I'd like to add one minor thing:

Give us an option to either: remove the "Add Task" line from the task list or possibly move the "Add Task" line to the bottom of the task list.

Visual Studio takes up so much screen real estate - the add task line takes up so much room for something that I never use.

# re: My wish-list for the next Visual Studio.NET release

Wednesday, May 28, 2003 10:24 AM by David
Re Error harvesting. Long ago I worked on with a PL/1 compiler that attempted to continue after errors. It had to assume what you meant to say instead of the error, and one wrong assumption generated a mass of meaningless errors.

Be careful what you wish for!

# re: My wish-list for the next Visual Studio.NET release

Wednesday, May 28, 2003 8:29 PM by Frans Bouma
David: heh yeah, I remember those days with the Sun 'CC' compiler when you forgot a ';' all hell broke loose. Fixing that ';' and all errors went away. :) However, what I ment was clearly repetitive errors which can be found but are now skipped. But indeed, we should be careful what to wish for :)

# re: Farewell, beloved Hungarian Coding.

Thursday, May 29, 2003 4:15 AM by Jim Argeropoulos
I was a strong proponent of using the "this->" convention for C++, but with C#, I don't see the point. There are no free functions, so you are either referencing a member function or a function in another object. So saying this.DoSomething() no longer adds a lot of extra readability/information for me.

I am torn on the notation subject. I don't, and never have, liked Hungarian to annotate the type of variable referenced. But I do like it to indicate purpose. m for member, a for local, in for input parameters, out for output parameters, k for constant, s for static. These add meaning and context to me. Dropping the a for local is not a big deal to me, but when I loose the context of input, output, and members. Then I start to have more of an issue.

I try to work both ways to get myself used to no prefix context. But it does hurt.

# re: A quick update on LLBLGen Pro

Friday, May 30, 2003 5:10 AM by John
Hi Frans,

I used your previous version on one or two projects and really liked it. One question though....what type of price range was you thinking for your next release?

Or is it too soon to say?

Thanks

John

# re: A quick update on LLBLGen Pro

Friday, May 30, 2003 8:40 AM by Paul Gielens
Bindable entities by implenting a binding interface upon a business entity... hmm looks farmilair ;)

Frans you thought about entity v.s. value objects? When is an object considered to have an identity and presumable be and entity? Or an object with no identy presumable a value object(depending on the object context?).

# re: My wish-list for the next Visual Studio.NET release

Friday, May 30, 2003 8:49 AM by Dan
About the help tab: I find it much easier to use external help. Then I can use Ctrl+Tab to switch between editors and Alt+Tab to switch to the help window and back.

# re: A quick update on LLBLGen Pro

Friday, May 30, 2003 8:56 AM by Frans Bouma
John: around 175 euros incl. VAT for a site license, thus unlimited number of developers can use that license in your company.

Paul: Entities are the elements you focus on when you design an ORM/NIAM model, thus f.e. the tables in your database. The entity classes talk about the same entities as the entities found in the database, they should be the same.

Besides these entities you have views defined over a number of attributes of a collection of entities. These are also supported (typed datatables).

# Emitter

Friday, May 30, 2003 9:03 AM by TrackBack
Emitter

# re: Entity: why do some people who write IT books re-invent definitions?

Saturday, May 31, 2003 2:06 AM by Paul Gielens
Evans, Domain Driven Design
@ http://www.domaindrivendesign.org/book/

This is NOT Fowler... I added Fowler as a ref because of his thinking about identity maps. I'm just telling there's a difference between objects that have an identity (entities) and objects that don't (value objects). This makes a BIG difference within domain models and because LLBLGen Pro seems to generate large parts of the domain model as well... Read a few lines in Evans's manuscript and perhaps we'll conclude we are thinking 1:1 but blogging the other way around.

# re: Entity: why do some people who write IT books re-invent definitions?

Saturday, May 31, 2003 2:15 AM by Frans Bouma
I don't see why people have to be focussed on a difference, of course they are different: one is defined in the persistent storage as an entity and the other one isn't. Value objects are views, collections of attributes which do not have a semantic meaning, entities do. The definition is over 25 years old, but in the definition you quoted, an entity embeds logic: they encapsulate operations. Which is wrong, the logic is embedded in code outside the entity, the entity using code.

# Frans Bouma's blog

Saturday, May 31, 2003 7:25 AM by TrackBack
Frans Bouma's blog

# XUL is the future - The Desktop War is Heating Up

Sunday, June 01, 2003 10:29 AM by Gerald Bauer
Wonna see the future today? Check out XUL (XML UI Language) @ http://xul.sourceforge.net

HTML was the markup for the browser. XUL is the markup for the desktop. The browser war is over, but the desktop war is just getting started.

# re: About sharing Intellectual Property, USP's and Patents

Tuesday, June 03, 2003 1:43 AM by Paul Gielens
Lol, my girlfriend is studying commercial economics (marketing), so this basically means we’re in the same boat.

Is your wife participating in the marketing offensive for LLBLGen Pro?

# re: About sharing Intellectual Property, USP's and Patents

Tuesday, June 03, 2003 1:55 AM by Frans Bouma
hehe same thing indeed! :D

She helps with the positioning of the product, the formulation of the USP's, basicly to make it a product that appeals to a wide range of people instead of just die hard nerds who live in a code-editor all day. :) Research of target audiences, analysis of what they really want is very important, because no-one wants to develop a tool that is perhaps kick-ass but is not used by a lot of people because the target audience wants other things than you deliver :)

It's very funny how developers always try to avoid others messing with the specs of what they have to write but at the same time developers are also very busy to convince marketing people that the developer knows everything about USP's, what's really important to the user etc. :) The best software is still written by developers who have convinced themselves that stuff like "It just works (tm)", "it does what people want it to do" and similar phrases, are the true sellers of software and not feature number 10987342 which is used by 0.001% of the user-base :)

# The Bleeding Edge

Tuesday, June 03, 2003 6:33 AM by TrackBack
The Bleeding Edge

# re: Microsoft, developer editions should be free.

Wednesday, June 04, 2003 10:09 PM by Paschal
I agree Frans, but at least it's much better than the original tag price, and it will certainly appeal some new database developers.

# re: Microsoft, developer editions should be free.

Wednesday, June 04, 2003 10:25 PM by Frans Bouma
I didn't even know the original price tag was that huge :) (a MSDN subscription makes you lazy I guess ;) ). There are a lot of developers in the world who do not have a lot of money but do know how to code (and are now working with free tools to write their .NET code). If MS truely wants to win the 'war' against Open Source and free tools, they should act better. But ok, it's a start, that $49.- .. :)

# re: Microsoft, developer editions should be free.

Thursday, June 05, 2003 1:59 AM by Mike Gunderloy
I seem to recall that the shipping on that free Oracle copy is pretty pricey, though - wasn't it in the neighborhood of $35 for a full set of CDs?

# re: Don't try to re-invent the browser, please.

Thursday, June 05, 2003 11:17 PM by jonx
Maybe we do not all have the same use of HTML. Said simply: If you think I'm going to develop my web site using web forms, then you are dreaming. I think, you are talking about different things, different needs.

# re: When Mono is completed, Linux is the option for the desktop.

Saturday, June 07, 2003 12:04 AM by Tq
thats still not on the desktop dude.
and quite frankly i dont think the bulk of the mono effort is centered towards desktop applications.

# re: When Mono is completed, Linux is the option for the desktop.

Saturday, June 07, 2003 12:36 AM by Paschal
Frans, the problem is more on the user experience. And believe me, I tried with non developers people, it's a nightmare.

Installing Linux properly with 10 people sharing the same network is not really there.

And I like Linux, but as a developer and for some specific applications. ;-)

# re: When Mono is completed, Linux is the option for the desktop.

Saturday, June 07, 2003 12:42 AM by Frans Bouma
It can be tough to setup, I know :) I've worked with Unix for a few years so I could manage, but indeed, if you're used to 'C:' and nicely layed out folders, you get confused rather fast. However, if the boxes are setup ok, like: the user sees a desktop with open office on it, it can browse corporate folders shared on a server (which are mounted as a folder, great system), work with the files and read/write email, there is not a lot they can screw up. Most people in offices spend their day in office applications, so if you can make the box to be good at doing that, a LOT of businesses can use linux at the desktop today.

Mind you: even today a lot of businesses are on win9x/winME, and that's no picknick either ;)

# re: When Mono is completed, Linux is the option for the desktop.

Saturday, June 07, 2003 1:21 AM by Dave
Frans, one term says it all: TCO.

So Linux can read/write MS Office docs. Problem is, you STILL have to retrain every single user to use some very separate apps there.

Virtually every shop out there with predominantly MS desktops will have to retrain their support too. Nowadays the help desk is a decent percentage of TCO for a company.

Seems the EXACT same argument was being made back in 1998-1999. You know, the old "we have apps" and "we have better security" and "bug fix releases come quickly" and "the purchase price is next to nothing". And Linuz since then has what? Moved from 2% market share to 3% on the desktop?

TCO, bud.

# re: When Mono is completed, Linux is the option for the desktop.

Saturday, June 07, 2003 1:32 AM by Frans Bouma
Retraining is an issue indeed, however is there a clear view on this, how much the impact is? I think it greatly relates to the level of computer savvyness of the user. A word processor isn't that hard to work with, type, select font, save, print. However, support has to be retrained and that's costly, but even then: when your organisation is on NT4 + win98 and now moves to win2k3 server + winXP, it's day and night for both support and end user. THere, too, support personel has to be retrained to get the most out of the platform. I don't know if that retraining will be that much different from the retraining of the sysadmins to work with /etc files :)

(after all, linux or FreeBSD for that matter, isn't anymore at the level of 1998, 1999, where it was a mess. A lot of the configuration files have now gui applets, are better documented and there is overall better documentation. It still takes some effort, but I still believe its ready for the desktop and it can be worth it. With Mono on linux, (if everything pans out correctly), applications written for windows (desktop apps) can work on mono on linux as well, which makes the switch worth it.

# re: When Mono is completed, Linux is the option for the desktop.

Saturday, June 07, 2003 2:21 AM by Andres Aguiar
The problem is not technical. Even if Linux was easier to install and had everything an end-user would need, they will need:

- A worldwide distribution model. MS has it, and is very difficult to build.
- Make the internal help desks and support center to support Linux. This is _very_ hard to acomplish. The companies invested _a lot_ of money in training people with Windows technologies
- Books, training courses.
- Partners that can make money on it. There are much more ISVs in the Microsoft arena than in Linux's
- Probably more reasons ;)


# re: When Mono is completed, Linux is the option for the desktop.

Saturday, June 07, 2003 2:52 AM by Tim Marman
Interesting article in the last InformationWeek: http://www.informationweek.com/story/showArticle.jhtml?articleID=10100565

"More than a third--38%--say Linux's greatest weakness is the limited availability of business applications for the operating system, up from 32% a year ago. Nineteen percent say the proliferation of different flavors of Linux is a problem, up from 12% a year ago, raising the fear of incompatibility among the various versions, as happened with variants of Unix."

And not to mention the pending legal action from SCO, which undoubtedly is going to have some impact. Already, there are analysts (I think Gartner but I may be wrong) that have cautioned against using Linux at all right now in the face of that action.

# re: When Mono is completed, Linux is the option for the desktop.

Saturday, June 07, 2003 2:55 AM by Tim Marman
Duh. If I read Randy's original post, I would have realized that it was Giga and not Gartner who said that :)

# re: When Mono is completed, Linux is the option for the desktop.

Saturday, June 07, 2003 4:36 AM by Brad Wilson, The .NET Guy
I don't know how many of you have used Lindows, but Lindows is VERY usable. My mom -- which is not quite techno-phobic, but definitely a hard sell -- would be comfortable with Lindows.

However, I disagree that Mono will make the shift. The only way that could happen is if they had a 100% solid Windows Forms implementation, so there could be desktop app compatiblity. Not only is Ximian not interested in doing it (someone else is), I have grave doubts that anybody short of a team of dozens, maybe hundreds, of Windows _experts_ could ever pull it off. Windows is a moving target, as Wine has showed, and Windows Forms is so leaky an abstraction that it's impossible to forget that there's Windows underneath.

# re: When Mono is completed, Linux is the option for the desktop.

Saturday, June 07, 2003 4:41 AM by Frans Bouma
Brad: windows forms is such a pain because it is based in HWND's and messages when you want to do tricks (and who doesn't). If you can create an api that has the same interface as system.windows.forms, but calls into the gnome/kde libs, it will work. If mono isn't gonna do winforms, it will indeed be something else that needs to make the shift. I also don't see why a winforms implementation should use wine or a win32 imitating layer, everything that's needed is already there, in X.

# re: When Mono is completed, Linux is the option for the desktop.

Saturday, June 07, 2003 7:03 AM by Dave
Maybe everyone knows the basic functionality of a word processor or a spreadsheet, but it's the power users who know the shortcuts. Where MS flat out beats the competition is standardization of everything.... toolbars, menu shortcuts, ... even a unified scripting language.

These power users do alot for a company. They heavily influence perceptions. They are the most highly productive employees. They deal with the brunt of questions that the help desk would otherwise have to.

Compare your arguments for Linux to those elitists who insist on tableless layouts in websites. In a sheltered corner... weblogs made by us geeks and read by us geeks who generally have standards-compliant browsers... this sort of stance works fine. In the real world... businesses strapped in bad economic times seeking every dollar of revenue from other companies whose lack the support to upgrade their browsers or connections... is it any wonder CSS still hasn't caught on?

# re: When Mono is completed, Linux is the option for the desktop.

Saturday, June 07, 2003 8:31 AM by Jesse Ezell
Anyone else notice that the linux guys only halfway decent products are the ones they clone from MS or some other commercial company? Then, they say they hate MS, because they just steal stuff from everyone. Some people have a bad case of Robin Hood syndrome. I would hate to see the day when commercial commercial software companies cease to exist... there wouldn't be any cool products to clone anymore. :-)

# re: When Mono is completed, Linux is the option for the desktop.

Saturday, June 07, 2003 9:06 AM by Frans Bouma
errr, doesn't every software company clone aspects of others? I don't know, but 'Excel' isnt a microsoft invention, nor is 'wordprocessor' or even wysiwyg wordprocessor :)

# re: When Mono is completed, Linux is the option for the desktop.

Saturday, June 07, 2003 9:21 AM by Paul Gielens
Mono is far, far... far from ready. Besides Mono is claiming an independant framework and not a 1:1 copy for .NET. And what'll happen with Mono once MS releases .NET 5.0 concerning compatibility? I can't imagin commercial companies taking such a risk for serious apps.

# re: When Mono is completed, Linux is the option for the desktop.

Saturday, June 07, 2003 11:45 AM by randy
I don't think Mono will be enough. I think it will increase Linux's viability as a server platform, but not for desktops. The availability of good applications and good support for end users is the key there.

# re: Optimization the right way: optimize your algorithms

Sunday, June 08, 2003 4:38 AM by OmegaSupreme
Interesting article, I like your approach. At the end of the day we use dotnet for speed of development, who has the time to think about the msil and low level optimisations ?

Gotta respect the demo programmers anyway, if you could get such amazing effects out of an amiga or an st we should trust you when it comes to dotnet :D

# RE: Windows.Forms on Mono

Monday, June 09, 2003 7:56 AM by Swythan
I'll be very happy if we can get to a point where most .NET desktop applications will run on Mono , but it's not going to be easy. The problem is indeed Windows.Forms, as Brad Wilson said.

The mono WinForms implementation IS based on Wine, and is thus is limited by the extent of Wine's Win32 coverage. As Brad said this is always going to lag by a certain amount, although I hear it's currently good enough to run MS Office and StarCraft (GTA 3 soon, apparently)

Frans: I watched the mono WinForms mailing list go over and over the question of whether their implementation should be based on Wine or not. What it came down to was that anyone who had *really* looked into it found out that WinForms is *such* a leaky abstraction that you couldn't do it without emulating at the *very least* all the message pumping behaviour of Windows.

The other problem is that (in the main) the only ppl who really know how WinForms works are old Win32 developers, who understand what is going on beneath the abstarction. These ppl are the only ppl who are going to be able to write a reasonably compatible implementation of WinForms in a reasonable amount of time. Unfortunately, they don' t (as a rule) know GTK/QT/X, and generally are used to programming on Windows. I think the wine-based WinForms implementation is going to flesh out a lot quicker than any non-wine one could.

So, as it stands, to run WinForms apps, you'll need Wine. For all non-WinForms apps, though, mono should be great.

In the end, I think this is a shame. When I first heard about Mono, I was thinking about how great it would be to just be able to run Windows apps on Linux. I've since seen that this probably won't happen (seamlessly). What you CAN do, however, is write a cross platform non-gui app, or even a cross-platform gui app by using GTK# or QT# (& I think there is now a SWT port as well).

Wow, I've written too much. I'll shut up, now!

# re: A quick update on LLBLGen Pro

Tuesday, June 10, 2003 9:26 AM by Darren Pruitt
So, Frans, when are you going to add the SQL CE option? That would be really sweet!

# re: The 'benchmark' code

Thursday, June 12, 2003 6:32 PM by Ron Steiger
Frans,
Here is my test on a Celeron 1.8 running XP Pro. I can run more tests against separate servers later.

The dynamic query wins by 17 seconds.
Dynamic - Total time: 00:01:33.5845680.
StoredProc - Total time: 00:01:50.7292208.

This is good news, since I am building a routine to copy data between tables on different servers using DB2/400. The class uses a select statement to retrieve the source data, then creates an insert statement from the source dataset for the target.

I wanted to handle this for many tables and potential libraries and did not want to create and manage all the stored procedures. I don't care if the table structures change and have a generic copy routine.

I will wrap this in a web service and use it to copy policies between our production and test libraries that reside on separate servers.

I enjoy reading your common sense and practical articles and comments.

Ron

Dynamic query benchmark
Benchmark started on: 6/13/2003 12:14:45 AM.

Benchmark ended on: 6/13/2003 12:16:19 AM.
Total time: 00:01:33.5845680.
Amount of runs: 10000. Max. amount of rows retrieved: 830
Stored procedure benchmark
Benchmark started on: 6/13/2003 12:16:19 AM.

Benchmark ended on: 6/13/2003 12:18:09 AM.
Total time: 00:01:50.7292208.
Amount of runs: 10000. Max. amount of rows retrieved: 830

# re: Feeding the trolls

Friday, June 13, 2003 8:32 AM by Marc
Please don't take my post as an attack on anyone. It was just a satirical take on Scott's bloodbath of rage.

# re: Feeding the trolls

Friday, June 13, 2003 9:12 AM by G. Andrew Duthie
Oh, come on Frans. Lighten up a little. Scott's post was funny, and given how frequently self-styled "industry authorities" hold forth about things about which they clearly know nothing, such responses are a harmless bit of venting.

I would agree with you that responding with ad-hominem insults to every ignorant opinion column you read would be excessive, but a choice response to the particularly egregious can be healthy, IMO. No harm in letting off a little steam occasionally.

# re: Sometimes, the human mind acts in mysterious ways

Saturday, June 14, 2003 12:23 AM by Jimmy Nilsson
Good story Frans! If it makes you feel better, I have also wanted to gather a couple of static functions under a contract and realized that it wasn't possible. I also felt somewhat "ashamed" afterwards, but what the heck, it's not the end of the world.
:-)

So, what solution did you choose? Skipping the interface or skipping static?

Best Regards,
Jimmy
###

# re: Sometimes, the human mind acts in mysterious ways

Saturday, June 14, 2003 12:24 AM by Jonne Kats
lol, this really sounds Familiar to me....

# re: Sometimes, the human mind acts in mysterious ways

Saturday, June 14, 2003 12:30 AM by Paul Gielens
Frans, you seriously disappointed me ;) No clue what methodology you use, but eXtreme Programming (XP) would have trapped that issue probably in the first iteration. Start prototyping dude!

# re: Sometimes, the human mind acts in mysterious ways

Saturday, June 14, 2003 12:30 AM by Frans Bouma
:)
I skipped the interface. The static methods are really handy, since they're one shot calls, so having an object for just 1 call is not that handy. :)

# re: Sometimes, the human mind acts in mysterious ways

Saturday, June 14, 2003 12:31 AM by Frans Bouma
Paul hehe I'm not gonna bite! am NOT! :D :)

# re: Sometimes, the human mind acts in mysterious ways

Saturday, June 14, 2003 12:33 AM by Paul Gielens
Hehe, wasn’t my intention… just a little teaser ;)

# re: Sometimes, the human mind acts in mysterious ways

Saturday, June 14, 2003 12:37 AM by Frans Bouma
I know ;)

# re: Sometimes, the human mind acts in mysterious ways

Saturday, June 14, 2003 12:50 AM by Robert McLaws
Your implementation SCREAMS Factory Pattern. It's what I use in GenX.NET when I deal with my OutputProviders without needing to know which provider I am using. I'm going to be writing a Factory Pattern tutorial sometime early next week, after I RTM GenX.NET 3.0. Until then, don't scrap your code.... you're just missing one more piece to the puzzle.

Any BTW, you didn't make a fool out of yourself. It can be done.

# re: Sometimes, the human mind acts in mysterious ways

Saturday, June 14, 2003 12:53 AM by Robert McLaws
Also, I know this method would be perfect because GenX.NET uses it for the exact same reason... specific implementations for specific databases. Believe me, understanding this method will take your coding to a whole new level.

# re: Sometimes, the human mind acts in mysterious ways

Saturday, June 14, 2003 12:56 AM by Frans Bouma
Robert, I do use a lot of factories, I have the GoF book. :) In my DAO objects (using the DAO pattern) I simply want to call IActionQuery query = DynamicQueryEngine.CreateInsertQuery(//...);

Which one is based on the using directive at the top. This is generated code, so I only have to change 1 line to make it work with Oracle f.e. and the generator generates Oracle code. I understand that when I create the DAO in the DAO factory I can also create the right DQE object and pass it to the DAO, but that's not that efficient because these DAO objects are not living very long. A static method is then more appropriate. Admitted, it can be done using a factory, but a static method in this case is more efficient I think. It's not a big deal, the templates used for the code are closely related to the DQE and the database driver used, so it's a complete package, but I was just wondering if I could create an interface for this, but I couldn't. :)

# re: Sometimes, the human mind acts in mysterious ways

Saturday, June 14, 2003 1:03 AM by Frans Bouma
Robert: I don't have a central cache system where I can store generic objects, so I can't cache these kind of objects like the DQE. If I could, I definitely would have used the factory route. But now I can't. Image that when I load 2000 customer objects in memory. Then I have 2000 times created the DQE. That's pretty amazingly inefficient :)

But I appreciate your thoughts. You definitely understand what's required for good OO software :)

# re: Finally my own skin

Saturday, June 14, 2003 4:17 AM by Marcus
The menu and title aren't visible .. Change the color of the text also ;)

Best regards
Marcus

# re: Finally my own skin

Saturday, June 14, 2003 4:22 AM by Frans Bouma
hehe I know :D I had a margine defined somewhere that bugs the crap out of it. I've almost fixed it :D (famous last words)

# Mozilla

Saturday, June 14, 2003 4:27 AM by Brad Wilson, The .NET Guy
Don't forget to test on Mozilla. I'm almost positive what I'm seeing is not correct, using Mozilla Firebird 0.6. :-D

# re: Finally my own skin

Saturday, June 14, 2003 4:31 AM by Frans Bouma
good tip, thanks :)

# re: Finally my own skin

Saturday, June 14, 2003 5:38 AM by sirshannon
I second the Firebird problem. The horizontal lines in the left column extend out of the left column and into the content area a bit.

# Emitter

Saturday, June 14, 2003 6:05 AM by TrackBack
Emitter

# re: Finally my own skin

Saturday, June 14, 2003 6:09 AM by Frans Bouma using Firebird
phoenix/firebird's lines are fixed. Now I only have to battle with the borders below and at the right which seem to appear in firebird but are not there in IE (MyIE2).

Opera doesn't eat the javascript btw. Not that I care, but perhaps there is a solution. It doesn't understand the createElement statement.

# re: Move away from stored procedures or not?

Monday, June 16, 2003 12:41 AM by SBC
Very interesting points. In most of the corporate systems, if code is considered to be the the crown-jewels (assets) then *stored-procedures are surely the diamonds. I think there'll be conversion utilities (*SPs into embedded code) to help transition (if any) but it will still rest with the performance of the system. In addition to security, most of the *SPs are valued for performance while handling high volume transactions - if it can shave off a few millisecs then it'll certainly get serious consideration. Good post Frans.

# re: Move away from stored procedures or not?

Monday, June 16, 2003 10:33 AM by Travis
Views are great. Indexed views are even better. Too bad SQL Server 2000 Enterprise is so damn expensive!

# mads studentblog

Monday, June 16, 2003 10:39 AM by TrackBack
mads studentblog

# Andres Aguiar's Weblog

Monday, June 16, 2003 10:39 AM by TrackBack
Andres Aguiar's Weblog

# re: A quick update on LLBLGen Pro

Tuesday, June 17, 2003 4:35 AM by Bruce Onder
Any plans for two-way tools a la DeKlarit? If not, what is the process for updating the DAL as the database changes across releases of software?

--Bruce

# re: A quick update on LLBLGen Pro

Tuesday, June 17, 2003 4:39 AM by Frans Bouma
No, there are no plans for two way tools, since these can be pretty problematic. When the database changes, you simply refresh the catalog view, LLBLGen Pro will enlist the classes, typed lists and other elements which are changed because of the changed database and you can apply these changes then, regenerate the code, and are set.

# re: A quick update on LLBLGen Pro

Tuesday, June 17, 2003 11:47 AM by Bruce Onder
Okay. I like some of the features DeKlarit has, but I agree with you that these can be problematic.

I ran 1.2 on Northwind with no problems. I am next going to run it on the database created by my current DeKlarit project and see how the code looks there. :)

--Bruce

# re: A quick update on LLBLGen Pro

Tuesday, June 17, 2003 8:50 PM by Frans Bouma
Which features do you like of DeKlarit? Can you describe them a bit? Perhaps LLBLGen Pro already will support them :)

LLBLGen Pro is in every word a successor of LLBLGen v1.0 so it is not a simple upgrade, it is a new tool with a broader functionality spectrum, which means that the functionality of v1.0 is extended and re-implemented and new functionality is added. The concept of what the generator will generate is moved upwards, from the DAL to the DAL + BL Facade, which is now integrated. :) (hmm, I'm starting to sound like a person from marketing ;))

# re: A quick update on LLBLGen Pro

Wednesday, June 18, 2003 1:44 PM by Bruce Onder
In theory I like the fact that Deklarit lets me focus on the object model and builds the data model behind the scenes for me. In practice the tool is a bit hard to use, but this is IMO user experience.

For example, in DeKlarit I can create the following entity:

Client
ClientID (PK)
ClientName
TransactionID
TransactionDateTime
TransactionAmount
ClientBalance (sum(TransactionAmount))

This will produce two tables for me, Client and Client1. It would produce a Transaction table only if I created a separate entity (what they call a business component, which i feel is a misnomer) called Transaction and had those same property names in it (Deklarit uses name/identity equivalance on properties).

# re: A quick update on LLBLGen Pro

Wednesday, June 18, 2003 1:48 PM by Bruce Onder
oops, the transaction* properties should be indented a few spaces to show they are a level inside of the Client entity.

# re: A quick update on LLBLGen Pro

Wednesday, June 18, 2003 2:39 PM by Bruce Onder
Will there be strongly typed tables in 2.0?

# re: A quick update on LLBLGen Pro

Thursday, June 19, 2003 6:53 AM by Frans Bouma
There will be strongly typed tables, so called typed lists. These can be designed in the tool (the columns and the list of entities to retrieve them from) and contain filters in code, so you can filter on the list at runtime. These are typed datatables.

I'm a strong believer of abstract modelling of datamodels, by using NIAM or ORM (see http://www.orm.net). Therefor modifying a database in LLBLGen Pro is not necessary since the database is created using an E/R model that is derived from a NIAM / ORM model created by a software architect.

LLBLGen detects automatically relations between entities (1:1, 1:n and m:n) and adds properties to retrieve related data automatically. So you can walk these relations by simply pressing the '.' :) -> CustomerEntity c = new Customer("ABC");
string ProductName = c.Orders[0].OrderDetails[1].Product.Name;

All lazy loaded. Also available in a datagrid, you can bind c.Orders to a datagrid and walk the complete model from there, in your grid :)

# re: Harry Potter reloaded

Saturday, June 21, 2003 9:10 PM by Paul Gielens
You're joking right ;)

# re: Harry Potter reloaded

Saturday, June 21, 2003 11:10 PM by Frans Bouma
No :) Harry Potter rocks. At first I thought "but... that's a kids book", but that's not true, the books are very funny, you should read one :)

# re: Harry Potter reloaded

Sunday, June 22, 2003 1:00 AM by Paul Gielens
Never read "one" myself so I better not comment directly related to the book. Although in a twisted way it's quit funny, just imagine reading a book of Harry P. lol Get your sorry ass on the beach in Scheveningen Frans and enjoy the weather reading some serious garbage like the Panorama or even more worse, the Privé ;)

# re: Harry Potter reloaded

Sunday, June 22, 2003 1:06 AM by Frans Bouma
hehe :) We have all 5 books of HP, and when you start reading one, you can't stop. It's not written like a kids book, it's readable :) and the beach? Are you nuts? It's raining here :)

# Emitter

Sunday, June 22, 2003 7:26 AM by TrackBack
Emitter

# re: A quick update on LLBLGen Pro

Sunday, June 22, 2003 9:38 AM by Bruce Onder
Nice! Hurry up, summer! :)

--Bruce

# re: LLBLGen Pro screenshot

Monday, June 23, 2003 10:33 AM by Chad Osgood
Nice work Frans!

# re: LLBLGen Pro screenshot

Monday, June 23, 2003 10:36 AM by Frans Bouma
Thanks :) Most of the work done is behind the scenes, this is the first time I can actually show something that is visually attractive and somewhat interesting. :)

# re: LLBLGen Pro screenshot

Monday, June 23, 2003 10:38 AM by Patrick Steele
Very nice UI. Is that the Magic library from Cronwood?

# re: LLBLGen Pro screenshot

Monday, June 23, 2003 10:42 AM by Frans Bouma
Yes, that's the magic library. I haven't used all of its power though, but it is a very handy library for dynamic gui building, you can create powerful gui's in no time. :)

# re: LLBLGen Pro screenshot

Monday, June 23, 2003 11:13 AM by Patrick Steele
Yeah, I've done some prototyping with it and it's a very nice package for the price (free!).

# re: Create #region macro for C#

Monday, June 23, 2003 4:38 PM by Wes Haggard
If you are looking for a tool to quickly place templated code such as regions or properties take a look at QuickCode.Net I have been using it for a while and I like it.

# re: LLBLGen Pro screenshot

Monday, June 23, 2003 9:03 PM by Michael Hensen
It is looking great..
Will we see any beta's or opportunities to test :-)

Keep up the good work

# re: LLBLGen Pro screenshot

Monday, June 23, 2003 9:09 PM by Frans Bouma
There will be a short beta cycle of course :) I haven't decided yet if that will be a closed beta or an open beta. Of course there will be a trial version when it's released :)

# re: LLBLGen Pro screenshot

Monday, June 23, 2003 9:09 PM by Senkwe Chanda
I use LLBLGen alot, a great time saver. Looking at that screenshot and feature list though, guess I'm gonna have to scrape together a few bucks this time. Go easy on us here in Africa though ;-)

# re: LLBLGen Pro screenshot

Monday, June 23, 2003 9:18 PM by Frans Bouma
Senkwe Chanda: :) I'll do everything I can to make the price as low as possible. It will already have a site license instead of a per-seat license, so you pay 1 price and all the developers in your department can use the tool. It will be around 150-170 euro.

# re: LLBLGen Pro screenshot

Tuesday, June 24, 2003 7:26 AM by Paul Gielens
Exciting, "generates a complete O/R mapper framework" is just what I wanted to know! I hope that our discussions about OR Mapping will be expressed in tool supremacy!

Heads up!

ps: What happens with heavily normalised models? Is your tool "smart enough" to let the end user be the director of what to do with what in contradiction to many, many commercial tools out there?

# re: LLBLGen Pro screenshot

Tuesday, June 24, 2003 8:30 AM by Frans Bouma
"What happens with heavily normalised models? Is your tool "smart enough" to let the end user be the director of what to do with what in contradiction to many, many commercial tools out there?"
I know what you are refering to :) but I kept the 1 table per entity restriction. However, it shouldn't be a problem, here is why: at the left you see f.e. a relation between employee and customer, over the entity order, a m:n relation. The tool finds these relations which are not obvious to the user. ('orders' is not an intermediate table between the employee-customer relation, the relation is created using 2 1:n relations).

It is possible to navigate from one entity to any other entity in the system, using the relations. The code generated will embed as much logic as possible to make you navigate/retrieve related entities from any entity you currently have an instance of. So heavily normalized databasemodels are not a problem, you can navigate to any related object without a problem.

Not in the screenshot, because I have to create the designers yet, are the typed lists. These are read-only typed datatables based on entity definitions, which can span more than 1 table/entity, f.e. all orders with the customer fields joined with every row. So for data-retrieval, where bulk data has to be retrieved which spans more than 1 table, you can define typed lists, and the typed list code embeds rich logic for filtering and clever instantiation.

Every entity definition has also a typed collection (hi mr. Fowler!) which embeds logic to work on groups of entities directly in the persistent storage or in the collection itself (and is bindable too :))

I'm pretty sure that on the DML front, you can work easy with the entities and the relations between the entities (plus the dynamic query engine and the filters you can define to retrieve groups of objects also f.e via filters on related objects.), and on the data retrieval front, you can work with indivitual entities, the entity collections or with the typed lists.

I also implemented stored proc execution as a bonus for people who have stored procs they want to embed (select sp's only).

# re: LLBLGen Pro screenshot

Tuesday, June 24, 2003 8:33 AM by Frans Bouma
(oh, the typed lists use the dynamic query engine and you can f.e. define a dynamic query using the same logic in your own code if you like. Yuo then can retrieve the data in a normal datatable, but the overall flexibility is there. ).

# re: My wish-list for the next Visual Studio.NET / .NET api release, part II

Wednesday, June 25, 2003 1:43 AM by Jan Tielens
Hi Frans

I recently created tool to generate NAnt build files based on VS.NET project files. If you're intrested check out my post: http://weblogs.asp.net/jan/posts/9255.aspx

Greetz
Jan

# re: My wish-list for the next Visual Studio.NET / .NET api release, part II

Wednesday, June 25, 2003 1:46 AM by Frans Bouma
I've read that posting, thanks for the heads up :) I haven't tried it yet, I already made nmake files for the project I'm currently working on, but for the next time I'll consider it.

# re: My wish-list for the next Visual Studio.NET / .NET api release, part II

Wednesday, June 25, 2003 2:27 AM by Alex Hoffman
A great wish list - unloading an assembly has always been at the top of my list.

# re: My wish-list for the next Visual Studio.NET / .NET api release, part II

Wednesday, June 25, 2003 3:28 AM by Nino Benvenuti
A great list, Frans. I'll add that for the documentation (MSDN Library), I would like to see the .NET Compact Framework documentation as a separate collection rather than mixed in with the full .NET Framework documentation.

-Nino

# re: My wish-list for the next Visual Studio.NET / .NET api release, part II

Wednesday, June 25, 2003 4:35 AM by Frans Bouma
Darn, I forgot one:
Make the EventArgs object be able to hold an object reference. Now you have to create new eventhandlers every time you want to pass simple event data, you have to define an EventArgs derived class plus eventhandler.

# re: LLBLGen Pro screenshot

Wednesday, June 25, 2003 10:19 AM by a
Looking good! I can't wait. Just a reminder to take special care for making the dev model of this work well for multiple developers using source control and such.

# re: LLBLGen Pro screenshot

Wednesday, June 25, 2003 10:23 AM by Frans Bouma
It will generate sourcecode in a directory, not overwriting readonly files. Therefor, ideally you'll do this: check out the files, generate new code, overwriting the files, check in the files again. There are a number of sourcecontrol systems and I can't support them all.

The whole idea is that the generated code is an assembly you work with, thus the code should be compiled as a single assembly, and be referenced from own code, you also don't edit generated code, you derive from the generated code. Therefore, source control misery is limited to a bare minimum.

# re: My wish-list for the next Visual Studio.NET / .NET api release, part II

Wednesday, June 25, 2003 11:37 AM by Peter Provost
Here's a couple I'd like to add to the .NET API:

1. More interfaces. Not enough classes derive from interfaces, which makes interface-based testing (read test-driven development) almost impossible. (Think HttpContext.)

2. Better abstraction in ADO.NET. You can't really write clean generic data access code because you can't create a DataAdapter without knowing whether you're doing SQL or OLEDB.

Those two have bugged me for a while.

# re: My wish-list for the next Visual Studio.NET / .NET api release, part II

Friday, June 27, 2003 2:25 AM by Thomas Tomiczek
::Better abstraction in ADO.NET.

Worse - when you use visual deisgn (drag drop them onto a form) you get all the stuff hardcoded. Terrible.

I know you should never code this way, but they DO support it - and they do so wrong.

# re: About code generators / generating code

Sunday, June 29, 2003 12:17 AM by Paul Gielens
We used a slightly modified version of LLBLGen 1 for a project at the Fontys University. This saved us roughly 70% of the development time...not only because of the generation features, but also the iterative development made possible with LLBLGen. It's fast and easy to do roundtrip engineering using Visio creating the E/R, let LLBLGen update the DAL accordingly and slapping business-logic on top.

About 90% of the generation tools out there aren't useful indeed.

Just to note: LLBLGen also has its weak points... I'm not pr'ing over here ;)

# re: About code generators / generating code

Sunday, June 29, 2003 12:24 AM by Frans Bouma
:)

Code generators have disadvantages too, like when they are not able to generate the code for the functionality you define in them, or the generated code is not up to par with the functionality requirements you have. I don't think the percentage of useless generators is around 90%, but there are a couple which are not useful in a wide range of applications, however no tool is (try hammering a nail with a screwdriver ;)). That's why you have to make a choice which generator you'll use. That's the question you have to ask yourself, not if generation of code is useful, because it is.

The working-method you describe is the one I forsee also: modelling abstract database models in a high end tool, generate code to work with the physical result of that modeling and on top of that, if possible generate BL code, and if not, hand-develop it. With a form-designer to do the gui (which is also a code generator ;)) it's easy to cut down development time using generators. It's just weird not a lot of people understand that. Ah well, the Not Invented Here (NIH)-syndrome is still roaming I guess. ;)

# Datagrid Girl

Sunday, June 29, 2003 5:48 AM by TrackBack
Datagrid Girl

# Jonne Kats

Sunday, June 29, 2003 5:48 AM by TrackBack
Jonne Kats

# Eric J. Smith's Weblog

Sunday, June 29, 2003 5:48 AM by TrackBack
Eric J. Smith's Weblog

# Patrick Steele's .NET Blog

Sunday, June 29, 2003 5:48 AM by TrackBack
Patrick Steele's .NET Blog

# re: Don't try to re-invent the browser, please.

Sunday, June 29, 2003 11:02 PM by MH
You have to be kidding me. System.Windows.Forms is such a steaming pile of piss that Mono has to use Wine (windows emulation) in order to mimic it exactly. The "HWND issue" is most certainly not fixed, SWF exposes all the gory details of the underlying Win32 implementation to the world.

If you want a decent cross platform GUI system, use GTK# - entirely unicode, cross platform, containment based layout, sane language bindings etc. If you actually care about having nice GUIs on a webpage (though most webpages look and feel waaaay nicer than your average GUI to me) then you want to use a decent widget toolkit to do it.

# re: Don't try to re-invent the browser, please.

Sunday, June 29, 2003 11:07 PM by Frans Bouma
Tell me, why should the underlying implementation of a given method be the same on mono as on .net / win32, i.e.: using win32 functions? If a class 'button' mimics a button, no-one should care how that class does that, be it calling into GTK+ or win32 or other widget lib, the bottom line is that it should behave like a button.

The problems arise when .NET code starts to use HWND related functionality to create 'nice' effects, like vs.net style menus, or a treeview control which does more things than it currently can do.

However, 100% .net code should be runnable on a mono winforms implementation which simply implements the functionality using a native library like GTK.

# re: About code generators / generating code

Monday, June 30, 2003 6:19 AM by darren pruitt
I think an important point that should also be made is that programmers the use code generators should understand the code that is generated.

# re: About code generators / generating code

Monday, June 30, 2003 7:10 AM by Frans Bouma
I hope you mean: "understand the interface and functionality of the code generated". I really do not see why a developer who uses a code generator, should understand the source code generated, since he shouldn't modify that code anyway, only extend it, and then the developer should know the interface and functionality.

if class Foo has a method Bar, and all you should hve to do is call 'Bar', why do you want to know how Bar works? I never check the x86 assembler the JIT creates, nor do I decompile .NET library methods (unless they have unexpected behaviour, as in: it looks like a bug).

# re: A quick update on LLBLGen Pro

Monday, June 30, 2003 4:01 PM by nullable types
How are you handling nullable types in Pro? In 1.2 you use SQL Types.

# re: A quick update on LLBLGen Pro

Monday, June 30, 2003 10:01 PM by Frans Bouma
The classes are .NET classes and have .NET types for their properties. You can test when a value was NULL, but the properties exposed have .NET types. When you want to set a value to NULL, you simply specify null or nothing. When a field is nullable it will be ok, otherwise an exception is thrown. WHen you read a NULL value from the database, it gets converted to a default value, like "" for NULLs in string related types. These defaults are user definable in a special class. There is no SqlType nor equivalent used anywhere :)

# re: Serious SqlServer security problem: Microsoft's state of denial

Tuesday, July 01, 2003 5:44 AM by Paschal
Totally agree Frans, but you can also add the common scenario of hosting (like myself) where you have a firewall between the live server and the databse box.

I setup the two by letting access to nothing except the port to talk to SQL.

So the two cases you talked about are absolutly not working at all in this scenario.

Maybe the light will come from Yukon where apparently SQL will be closer to the Framework model.
BTW, nice stylesheet on your page ;-))

# re: Serious SqlServer security problem: Microsoft's state of denial

Tuesday, July 01, 2003 5:47 AM by Paschal
Oh I forgot also a case I know well where for some specific reasons too long to explain, the live server can connect either to a SQL box or a MySQL box(on Unix).

Using some DAL to switch easily from one to another, how MS think about trusted connections with an ASP Net username.

No way ;-)

# re: Serious SqlServer security problem: Microsoft's state of denial

Tuesday, July 01, 2003 5:50 AM by Frans Bouma
The firewall solution is indeed a possible 'fix', but firewalls are not that cheap, plus you already run the box inside a DMZ of a firewall. :) What I really would like to see is the ability to use application trusted connections as they are defined in ADO/Sqlserver. You can then define the trusted connection with an application and be done with it, which is in fact what you want. At the moment it's a chewing-gum and iron wire solution: it will hold but for how long? :)

about the css: thanks :))

# re: Serious SqlServer security problem: Microsoft's state of denial

Tuesday, July 01, 2003 9:15 AM by Michael
I have a comment, storing connection string in the compiled form it is "secure" as storing it in text file. The reason is simple if you run a dissembler available with .net framework on this assembly, connection string becomes fully visible. The only solution is encryption.

# Store Connection Strings in the Registry

Tuesday, July 01, 2003 2:18 PM by JosephCooney
It's possible to store connection strings in the registry, and apply decent DACLs to that. I believe you could also use a local LSA secret if you really wanted to. Writing Secure Code by Michael Howard and David LeBlank has some good info on this. Of course if the web server is 0wn3d that still leaves your SQL box vulnerable, but it certainly raises the bar.

# re: Serious SqlServer security problem: Microsoft's state of denial

Tuesday, July 01, 2003 9:08 PM by Frans Bouma
All the tricks of hiding / protecting the connection string are nice and clever, but they all show how bad the mechanism is. No-one thinks its ok to store your windows credentials in a string somewhere so you can log on; these credentials are stored in a userdatabase and you are granted access. What the text based connection string shows us is that the mechanism is flawed: it should be possible to define which application or which user has access to given objects inside a database, without having to specify a textbased string somewhere with a password.

The integrated security option is in theory a good replacement, in practise it needs some work though.

Btw, Joseph: the idea is neat, but the ASPNET user f.e. is not able to read from the registry... therefor you have to give up some security settings which are applied for you when the .NET runtime is installed by giving ASPNET access to the registry.

# re: Serious SqlServer security problem: Microsoft's state of denial

Wednesday, July 02, 2003 2:43 PM by JosephCooney
I can't confirm or deny whether the aspnet user can read the registry by default (it can on my machine, and I don't remember making any special changes), but you can easily configure it so that user CAN read the registry, or change the web.config so that a particular application runs as a different user (which you can give the required permissions to). Also registry access is not an all or nothing permission. Like the file system you can configure the permissions to a high granularity to give the access required. You could also encrypt the connection string (but then the probelm becomes where to store the key), or use DPAPI (which reduces the key management problem). Also if you make all your database access via stored procedures, and only give your SQL User account(s) access to these you can help mitigate the risk if your web server is compromised and your connection string is discovered. Maybe I just don't see the problem for what it is, but it seems to me that there are a number of options available for securing the connection between your SQL server and web server. Here is a useful link re: storing database connection strings securely.

http://msdn.microsoft.com/architecture/application/default.aspx?pull=/library/en-us/dnnetsec/html/SecNetch12.asp?FRAME=true#storingdatabaseconnectionstrings

Also, as I said in my previous comment Michael Howard and David LeBlank's book "Writing Secure Code" is really good for discussing this sort of thing.

# re: We're a labeled group now!

Wednesday, July 02, 2003 11:08 PM by Len Holgate
:)

It's the religious nature of it all that I find amusing. I have no problem with code generation and the stuff I've read here about generating and regenerating database layers is great. I just don't think that it's going to take over entire application areas like Ian Wij's seems to in his "Writing Code is Stupid" piece. Evolutionary language improvements and tools to handle the mundane areas sure, but gather requirements and build from a requirements model? Nah.

Writing code is hard. Anything that makes it less hard is good; that includes code generators, testing, decent clients, etc, etc. But none of them are a silver bullet.

And I'm sorry but that quote of yours over on James' Avery's blog "People who do not understand that code generation is the future will be the first who will not be able to keep up with the rest who do." made me smile and kinda makes me feel that it's you guys that are the elitists - I'm glad it didn't end "will be the first against the wall when the revolution comes" ;)

And... How does questioning Ian's idea that code gen can replace "the "small army of generally not well skilled developers" that can be found in most organisations and who are "churning out a mass of ill-specified code through a poorly managed process" with some nirvana in which we "capture the requirements of the model" and have a code generator that can "consume the new model and generate appropriate code".
make me anything but a realist?

Keep up the good work, and prove us doubters wrong.

# re: We're a labeled group now!

Thursday, July 03, 2003 1:25 AM by Jimmy Nilsson
Here I come with a lot of comments only to find that Len has already written such a good one! Typical.
:-)

There's no single way, of course. Code gen is great to improve productivity. But we have to understand what to generate (or what has been generated).

# re: We're a labeled group now!

Thursday, July 03, 2003 3:46 AM by Ebenezer Ikonne
This debate is almost an unrealistic as the "paperless society" debate.

What more can be said?

# re: We're a labeled group now!

Thursday, July 03, 2003 3:53 AM by Eric J. Smith
I absolutely agree with Len. People who think that writing code will go away are crazy. I also think that generating entire applications is rediculous and will never happen. What will happen is that things will continue to be abstracted to higher and higher levels, but at the same time requirements will become more and more complex. So there will always be programmers out there writing code in one form or another.

# re: We're a labeled group now!

Thursday, July 03, 2003 4:01 AM by Frans Bouma
Ebenezer Ikonne: what has a paperless office idea to do with generating executable code from models? A paperless office doesn't work because the people IN the office want everything on paper so they print and print and print. If everyone starts using email and not a fax, it might become a reality. But that's another story.

All: What most people seem to think is that code generators should generate sourcecode. NO. They should generate executable instructions. Do not stick with a 'programmer language', because those things are invented for humans. No true code generator should generate plain sourcecode but should generate MSIL or other directly executable instructions.

Programming and developing software have NOTHING to do with programming languages and typing texts in a text-editor. Programming languages and typing texts are related to the implementation of the programming RESULTS. If you pick ANOTHER way of implementing the results of programming, you end up with another method of implementing it, but the end result should be the same: runnable functionality.

Forget 'OO', C#, loops, if then else and other program language related elements. Think in what a program should DO, and image the formulation of those functional elements in readable diagrams which can be drawn easily. Imagine then that those diagrams are fed to a tool which produces an executable. Such a tool can exist (there are already several btw) of hundreds of smaller similar tools. No programming language, no if then else for next switch case while wend, just a model as input and executable code as output.

Diagram quicksort for yourself, not in terms of C or VB, but in terms of plain logic. It's very easy.

# re: We're a labeled group now!

Thursday, July 03, 2003 4:12 AM by Frans Bouma
"I also think that generating entire applications is rediculous and will never happen. What will happen is that things will continue to be abstracted to higher and higher levels, but at the same time requirements will become more and more complex."
Two mistakes. One is that you can now think it is rediculous that generating a whole application is silly, but perhaps you should use MS Access for a change and build an application with it. 10 to 1 you don't need a single line of code. In the future this will only expand, because if you focus on FUNCTIONALITY and the end result, an executable program (or better: a set of logical components glued together with logic), you'll see that hammering in the code by hand is nothing more than a (often very bad) way of translating the functionality descriptions into a programming language which is transformed into another programming language and so on till executable instructions are produced. Now, the mistake is that you shouldn't follow the same route when you want to generate executable instructions from functional descriptions. You should follow to route which makes it possible in the most elegant, fast way.

The other mistake is that although applications tend to become more complex as a whole, this is not a delimiter for using code generators at all. The reason for this is that if application complexity was a delimiter for a computer, it certainly would for a human. People forget that you can build the most complex applications with the most simple logical building blocks. Once logical elements which contain ready to use functionality are available for generators, you have a layer of elements you can address from within your generator. If you can then generate new logic from your generator with those blocks, you get new blocks, new functionality you can re-use.

Nothing complex at all. Step aside from the programming language paradigm, generators shouldn't think in a language that is ment for humans.

# re: We're a labeled group now!

Thursday, July 03, 2003 4:24 AM by Jimmy Nilsson
In the late 80's, 4GL was so hot. But the problem all the time was that the last 20% of the apps were actually hindered by the 4GL tools so the total result was often not very good at all. (I know, evolution and development...<g>)

And talking about Access, that gives me several really bad flashbacks from old applications of mine... Brr...

Even so, I guess you have a good point. Just as everybody else writing comments here.
:-)

For now, code generation serves me really well when they spit out code too.
:-)

Best Regards,
Jimmy
###

# Eric J. Smith's Weblog

Thursday, July 03, 2003 4:26 AM by TrackBack
Eric J. Smith's Weblog

# re: We're a labeled group now!

Thursday, July 03, 2003 5:11 AM by Dave
Does code generation add another tool to my arsenal? Most certainly. But will it ever replace the bulk of my work? Absolutely not.

First off, for my job, source code is an absolute must. This is not negotiable. I'm not some entry level grunt, I'm the go-to guy when nobody else around here knows how to accomplish something. Jimmy put it very well. Currently I'm wrestling with SAP.... let's see, can I declare a PARAMETER in my ABAP program and create a simple selection screen? Sure. But when I wish that selection screen to ONLY contain plants which are designated as shipping points for a portion of one division, AND this varies depending on authentication.... 4GL can't cut it.

Another point here. Ever see the monstrosity of code the ABAP table grid wizard gives you? Yeah right. Since this code generator has no clue what things I need to accomplish with this grid it has to create each and every hook possible - leaving me to wade through the various sections of code to whittle it down to something maintainable.

Which brings me to my final point. MS Access? ROFL. Forget about the murderous SQL it automatically creates for queries. Forget about the pain in the butt scalability and truely robust security are. Just look at this: what's the outcome of all this code generating?

Yes, it DOES simplify many things. (I began by saying there is a place for code generating.) But it also has a truely disasterous effect....

Ever try to maintain a website written by some secretary who took a FrontPage course and so now deems themself a website developer? MS Access is like that. These non-technical people tend to know just enough to make themself dangerous. TO me, that is the REAL cost of code generation.

# re: We're a labeled group now!

Thursday, July 03, 2003 5:23 AM by Frans Bouma
Dave: Ah, so current implementations of 'generators' are an argument why it will never work? MS Access was an example, a metaphore.

I developed in a 4GL for 2 years, I know what it is like, and I also know that it is stupid to not use a 4GL or a generator when you are developing an application which is database driven (and... whoa, that's about a hell of a lot of applications)

Your example about frontpage illustrates enough: "These non-technical people tend to know just enough to make themself dangerous. TO me, that is the REAL cost of code generation.". Then you really do not understand what I'm talking about. The attitude illustrated in your remark is what I refered to with 'Elitism'. Programming should be possible for everyone who can think logical and can design software. Today it's only possible for people who know their way in a given IDE/Editor, a language, some API's etc. (in other words: stuff you can look up).

Why should a 'technical' person be necessary to create a webgui? I don't see that. Today it is necessary because of the crappy state of most tools, however in theory it shouldn't be. That's not because the concept of a generator sucks, but because the people who wrote the current crop of generators did not understand what a generator should do or they made it that way so the market would buy it, otherwise it was too far fetched.

# re: We're a labeled group now!

Thursday, July 03, 2003 6:15 AM by Ebenezer Ikonne
That was my point, source code will never go away..just like the fax machine.

But then again time will tell, like it always does.

# re: We're a labeled group now!

Thursday, July 03, 2003 6:20 AM by Frans Bouma
Sourcecode will go away, but when is a blur of course. I think the first places where it will be used less and less is in the average business apps which, excuse me, are most of the time structured the same. And then eventually the other parts. I don't see humans hammering code in 2100.

# re: We're a labeled group now!

Thursday, July 03, 2003 1:43 PM by Dave
Frans, to be honest that is that first time in 25 years I've ever been accosed of elitism. :-)

Seriously, to be totally objective, code generator - and I already said this - have their place. But they most certainly are not the be all or end all. Exactly what high level concept is so dramatically new here? Nothing. Before .NET OO you had 4GL. Before 4GL you had MS Access. Before MS Access you had 3GL. SO on and so forth.

Truely eliminating the need for people to write programming code will simply never happen. Never.

So what does this mean? It means that the better a code generator becomes, the more dangerous someone who doesn't understand why a code generator works becomes. Right now I have to deal with people who have no clue why they shouldn't just import their 20 column spreadsheet into MS Access. I mean "it works", roght? Normalization? Fergitaboutit.

Can you optimize code generators to (a) make my job as the technical lead on a project easier and (b) eliminate costs of having someone fresh out of college who can't do anything but write simple SQL? Most definitely. But there ain't no free lunch. There are costs. And those costs sometimes pile up on guys like me.

Elitism? No way. Realistic. If code generators - and let's agree right now this concept has existed for decades now - were realistically as great as you claim, then why hasn't one come along now to eliminate my job?

Do I believe my job in it's current capacity will exist in 2100? Nope. But not because of some code generator, rather, something much more simpler.... evolution.

# re: Serious SqlServer security problem: Microsoft's state of denial

Thursday, July 03, 2003 3:57 PM by George Doubinski
I think discussion missses two important facts:
1. Problem with integrated security is the way challenge/response works, i.e. passing challenge from web server to SQL which is not a domain controller does not work. However, there is a way to pass credentials securily (including *nix boxes, mind you). It's called Kerberos and 2000/2003 servers do support it.
2. In large scale implementation where people are concerned with SQL administrator having access to web server and vice versa, I think the solution would be to move your data access to a separate box and use .NET remoting.
Just my 2c
Georged

# re: We're a labeled group now!

Friday, July 04, 2003 4:16 AM by Ebenezer Ikonne
May I ask, what will be used to "create" these code generators. Do you envision a time when there will be a generator for every problem domain that exists?

# re: We're a labeled group now!

Friday, July 04, 2003 4:24 AM by Frans Bouma
What is used to create them? Normal programming languages. Like normal programming languages are used to create compiler generators which then generate themselves based in the input of an (E)BNF syntaxis specification.

I don't know when it will be that for every problem domain there will be a generator. If you look at the level of stubborness that is in the developer community at the moment for adapting even dumb generators, I think it will take a long time before the majority of developers is chosing a generator over the option to hammer it all in by hand.

# re: XBOX's 4th of july

Friday, July 04, 2003 5:04 AM by Doug Thews
I agree. Hardly a security hole, but an interesting trick. Linux on an Xbox - who'd have thought? :)

# re: Serious SqlServer security problem: Microsoft's state of denial

Friday, July 04, 2003 5:15 AM by Doug Thews
What you're talking about is something like Passport, where the system (or SQL database) sends you off to a service to authenticate, and you either come back with a valid key to enter, or not.

So, you could develop your own "Give Me My Connection String" web service that handles connection strings per app (if that's the way you do it). You use HTTPS and your app's authentication credentials (which can be compiled as part of the code - they shouldn't need to be changed). Then, get back your connection string.

I agree that this is not integrated and what you're thinking about (because it introduces a 3rd party), but it eliminates the need to store connection strings as strings anywhere on the web server.

# re: Whoa, 33 today!

Sunday, July 06, 2003 9:50 PM by Francois Verbeeck
Happy birthday Frans !

# re: Whoa, 33 today!

Sunday, July 06, 2003 10:35 PM by Jimmy Nilsson
Congrats!

Damn, I remember when I was the youngest among all I met at work... :-)

# re: Whoa, 33 today!

Sunday, July 06, 2003 11:17 PM by Roy Osherove
Happy Birthday!

# re: Whoa, 33 today!

Sunday, July 06, 2003 11:38 PM by Frans Bouma
Thanks all! :)

# re: Whoa, 33 today!

Monday, July 07, 2003 12:09 AM by Christian Weyer
Happy birthday! Well, I turn 29 today ... but somehow feel like 33 ;-)

# re: Whoa, 33 today!

Monday, July 07, 2003 12:52 AM by MM

Happy Birthday! :)

P.S. Some portion of cake still there? :)

# re: Whoa, 33 today!

Monday, July 07, 2003 1:44 AM by whoami
Happy Birthday.

# re: Whoa, 33 today!

Monday, July 07, 2003 1:57 AM by Sam Gentile
Happy Birthday! You're 5 days after me but much younger-)

# re: Whoa, 33 today!

Monday, July 07, 2003 3:08 AM by Zef Hemel
Congratulations :)

# re: Whoa, 33 today!

Monday, July 07, 2003 3:30 AM by Justin Bigelow
Just started subscribing to your blog last week. Good stuff. Happy birthday.

# re: Whoa, 33 today!

Monday, July 07, 2003 7:15 AM by Chris Frazier
Happy B-day!

Is that cake chocolate? If it is, can I send you my (snail)address?<G>

# re: Whoa, 33 today!

Monday, July 07, 2003 7:23 AM by Frans Bouma
Thanks again all :)

Oh, and about the cake, of cooouuuurse nothing is left. :D :)

# re: Whoa, 33 today!

Monday, July 07, 2003 9:49 AM by Paul Gielens
Congrats!

# re: Re: Am I the stereotypical VB Programmer?

Tuesday, July 08, 2003 5:16 AM by Greg
Well stated

# re: Re: Am I the stereotypical VB Programmer?

Tuesday, July 08, 2003 6:49 AM by Dave
Only in terns of VB versus C# is your argument valid. But I say if J#, COBOL and others can write IL that runs against the CLR (and _that_ is the _only_ relevant thing in this discussion when you get down to it) than why not VB too?

So VB is verbose. So VB originally was to be the RAD tool. Since VB4 it has been much more than that. Do I understand the inner workings of the Win32 APIs, COM/IDL? Do I understand the higher level concepts of OO, relational database design, threading and scalability? Sure do - and they are the cornerstone of my career path.

So C++ can do things more easily codable than VB regarding some of those. That never made me wish to wade into it. While not the best language, VB did allow me to develop clean maintainable apps that did all this.

IMHO, MS did the right thing by allowing me to write to the System Class, use ADO.NET and design multi-threaded apps. It all comes down to one thing only.... does a programmer understand how to use all the tools his/her particular language has?

# re: Re: Am I the stereotypical VB Programmer?

Tuesday, July 08, 2003 7:33 AM by Roy Osherove
Frans, Thanks for explaining. Your post was enlightening, and I'll be the first to admit I did not know (or did not think of) much of what you write. All but the part about VB.Net being redundant. I'll go with Dave on that one, but that's a different story :)

# re: Re: Am I the stereotypical VB Programmer?

Tuesday, July 08, 2003 8:14 AM by Phil
I agree with you. I'm from the C side of the fence, but I've done some VB programming the last few years. I know some VB developers that felt threatened/afraid of the change from VB to VB.NET, and they were even more afraid of C#. I feel that MS created VB.NET so that they would not lose the large pool of VB (larger than C++) "developers" out there. I don't understand why VB developers are so tied into their language, when I bring up C# they get defensive. On one hand I think that VB developers can create products faster and on the other hand I feel that they are lazy and unmotivated to understand the "why" not just the "how" of software development.

# heLP .Net Blog

Tuesday, July 08, 2003 10:24 AM by TrackBack
heLP .Net Blog

# ISerializable

Tuesday, July 08, 2003 10:24 AM by TrackBack
ISerializable

# re: Re: Am I the stereotypical VB Programmer?

Tuesday, July 08, 2003 12:03 PM by Dave
Now, to be straight about it, I dabble in C# and will continue to. I've never bee afraid to learn new ways or languages. I used to code in both Assembler and Fortran, but love the RAD-ness of VB. But I do know of many VBers who have a very hard time with the .NET 'evolutions'. LOL!

# re: Re: Am I the stereotypical VB Programmer?

Tuesday, July 08, 2003 11:21 PM by Peter Vervoorn
Nice article, and I can add another reason why i don't like the With statement; because it encourages people to write things like:
With A.B.C.D
myVar = .SomeVarFarAwayThatShouldntBeAccessedDirectly
End With

In fact, that is what i dislike about VB.Net the most, the fact that it enables people to cut corners where they aren't supposed to (i.e. On Error Resume Next)

# re: Re: Am I the stereotypical VB Programmer?

Wednesday, July 09, 2003 11:13 PM by Mike Woodhouse
Um, I hope it's not too cynical to suggest that a big reason for introducing VB.NET may have been the claimed 3 million VB programmers out there. That's an awful lot of potential upgrade license fees....

# re: "Framework-Hell"-solution is here: ISV's can upgrade to VS.NET 2003 without pain.

Thursday, July 10, 2003 6:50 AM by Leeman Schmidt
Frans,
What if the problem doesn't occur on the when I run my program on my machine, but when I tranfer the .dll to my website, then I get the problem message?

kreuzmarket@bluebon.net

# re: LLBLGen v1.21 has been released! (Mostly bugfixes)

Saturday, July 12, 2003 6:01 AM by Paul Gielens
Why no enhancements made by gotdotnet'ers? I'm sure where clauses on each field rather then FK's would be much appreciated.

Further, thnx for the ongoing support and fixes! Heads up...

# re: LLBLGen v1.21 has been released! (Mostly bugfixes)

Saturday, July 12, 2003 6:06 AM by Frans Bouma
The reason is simple: my codebase wasn't in sync with the gotdotnet codebase. I never included Lewis' updates for the where clause on each field because I found that a little too much (consider 50 tables with each 10 fields... ouch :) ).

Frankly, the workspace effort is a bit of a dissapointment, since not a lot has come out of it, but alas, it's freeware written in spare time :)

# re: Don't try to re-invent the browser, please.

Sunday, July 13, 2003 10:20 AM by Richard Tallent
Here, here, Frans. I posted on this topic today (see link), and I mostly agree, but I think there is a real syngery possible (God I hate that word, but it actually applies) combining the browser chrome and HTML/CSS with the CLR. If standalone forms would have been enough, Java would have won long ago, but HTML has a decided advantage in layout flexibility (and widget beauty, but I'll stay away from that). HTML forms and toolbars and really suck, but so does Java and WinForms when you need to design a long form with hierarchal datagrid-like properties. The best solution will be to run both in a seamless browser window (w/ or w/o the browser toolbar, just like pop-up windows now), which will overcome the web issues of limited form widgets, fixed positioning, ugly scripts, and server round-trips without sacrificing the things people *like* about browser interfaces.

# re: About code generators / generating code

Tuesday, July 15, 2003 6:29 AM by Matias Woloski
I couldn't agree more here: "code generator is the future".

btw, when are you planing to release llblgen Pro. I can't wait for that!
Do you have an estimative month?
Will you give the sourcecode at the same price?

thanks,
Matias

# re: About code generators / generating code

Tuesday, July 15, 2003 6:50 AM by Frans Bouma
Matias: I hope to be finished with it at the end of august 2003 :)

The system is extensible in a lot of ways: code is generated using templates plus the steps the generator takes are configurable using task definitions in an xml file which bind tasks (f.e. directory creation) to an assembly and class which performs hte task). You can then add whatever you like as custom task, using your own assemblies, f.e. get old sources first from a sourcecontrol system or whatever :). We haven't planned source control release for a price, but perhaps we open up the source of the runtime library for licensees.

# re: It's not Visual SourceSafe's v^Hfault

Wednesday, July 16, 2003 12:52 AM by Duncan
Good article.
We have a mantra here: The first place you need to install source control is in the developer's mindset.

# re: It's not Visual SourceSafe's v^Hfault

Wednesday, July 16, 2003 5:08 AM by Don McNamara
That is a very interesting read...

For me, one of the most disappointing things about SourceSafe is that while the IDE was improved so much between VS6 and VS7, and SourceSafe was barely touched.

The last two (fairly large) projects I've been on have used SourceSafe and I've had similar experiences both times. When the project is in its early stages, SourceSafe works fine. When the project matures, and you start to need more complex functionality from your SCM, it seems that SourceSafe just can't cut it.

I think one of the biggest problems I have with SourceSafe is the lack of promotion groups, (ie. to support work on multiple releases at the same time.) Sure, you can hack something together with sharing and labeling, but its just too messy in my opinion.

As far as I know, MS doesn't use SourceSafe (nor should they for the size of their projects) -- so much for eating your own dog food.

I have not had a chance to check out Vault, but it sounds promising.

ps. If anyone is looking for ideas, I want a SCM that will reject a check-in if they don't compile/pass unit tests. That would be very nice.

# re: Serious SqlServer security problem: Microsoft's state of denial

Wednesday, July 16, 2003 5:39 AM by Ramon Smits
Isn't this where serviced components come in handy? Only the credentials of the COM+ application should be able to connect to the database.

The ASP.NET web application can run with less permissions on the system then the COM+ application.

# re: It's not Visual SourceSafe's v^Hfault

Wednesday, July 16, 2003 6:16 AM by Jason Mauss
I just finished writing an article that should be appearing in September's issue of Pinnacle's Hardcore Visual Studio.NET on making the most of VSS and I agree that, when used for it's intended purpose, VSS works well. It does have some drawbacks not mentioned here.

1. It uses pretty outdated technology. (ex. INI configuration files when it could use something like XML)

2. It's performance over VPN and remote connections in general really sucks. I wouldn't tell anyone to use it over VPN...it slows to a crawl most of the time. If you ARE going to use it over VPN, disable some features you probably won't use like Shadow Folders, Journal Files, and Project Access Rights. The most important feature to enable for VPN users however isn't even configurable from the VSS client. You have to edit the srcsafe.ini file and set CP_OnSelection to False. Normally whenever you click on a folder (a project or project grouping level) VSS performs a selection operation, which can take a while over a slow remote connection. By setting CP_OnSelection to no, users can drill down in the project hierarchy and just double-click or hit Enter when they find the folder they want to actually select, not having to wait a while for each level they expand.

3. It's integration with IDE's is less than reliable. How many times have you got the "Failed to reload project" message or checked out a file only to be told you couldn't edit it seconds later? Stuff like that bothers developers and I'm guessing it would only take someone at MS a week or so at the most to fix.

4. The way it performs "diff" checking is just slow. Vault really spanks the pants off of VSS in this situation. Vault's use of delta's is much more efficient. Also, use of some sort of data compression technology would be nice to help speed things up.

Like you've touched on - I think most people use VSS withouth really knowing the tool that well at all which isn't VSS's v-Hfault at all. I've talked to some of the VSS team at MS and like Don said, a good share of people at Microsoft don't use VSS. They use a command-line tool called "Source Depot" which I believe is a variant of CVS. I still use VSS for some things but have tried Vault and just find it easier to work with as a SCM. Why Microsoft hasn't tried to buy SourceGear yet or at least offer their SourceOffSite product for free with VSS makes me wonder how much MS really cares about what people think of VSS.

Ok, I'm done ranting.

# Darrell Norton's Blog

Wednesday, July 16, 2003 6:33 AM by TrackBack
Darrell Norton's Blog

# re: It's not Visual SourceSafe's v^Hfault

Wednesday, July 16, 2003 9:21 AM by Jerry Dennany

Sorry Frans, but VSS is crap. The single most important thing that a SCC system MUST do is keep source code (and all past revisions) safe. VSS's very architecture precludes this. It is a client that writes directly to a proprietary database with non-atomic commits. If a client fails in the middle of a commit, you are almost assured database corruption. I've seen it several times over the course of several years. If you only work with the 'head' revision, you are unlikely to notice, but it becomes apparent when you work with past file revisions.

It also has very poor branching and merging capabilities, both of which are important as your product matures.


You also tak about lock vs concurrent editing. Your locking model fails in a number of use-cases:

1. Disconnected editing. This is the largest area where a locking type SCC model fails. File locking does not work well in a disconnected mode, while concurrent models (Such as Perforce, CVS, Subversion, etc) work very well. Indeed, with VS.NET and VSS, it attempts to imitate a concurrent versioning system in the disconnected mode.

2. Highly contested, frequently changed files. Depending on the toolset or project, some files are 'volatile', and must change frequently, are shared accross projects or libraries, and must be changed by more than one user. A locking model does not work well here, as this will act as a block against other users performing work. The suggestion that you delegate work is often impracticle, as there is often one person who is best qualified to perform a specific type of change.

3. The suggestion that user A tells user B what changes to make is yet another form of merge, although verbal instead of toolset based. Why not let the technology handle the merge? That's what concurrent editing was designed for.

As far as scheduling work and shared resources to avoid locking problems, you may be sacrificing development speed for diminished lock contention.

I could write several thousand words on why VSS is a poor solution, but I think I'll leave it at that for now.

# re: Get rid of the 'file' concept for sourcecode!

Friday, July 18, 2003 10:37 AM by Robert Hurlbut
How would you script the builds on a machine without the IDE? Would the "elements" be pulled out of the repository to recreate the local "files"?

# re: Get rid of the 'file' concept for sourcecode!

Friday, July 18, 2003 10:39 AM by Frans Bouma
No, the tools are not working on the filesystem but with code elements retrieved from the repository, f.e. by calling the repository webservice. The concept of 'file' is not used when building the software.

# re: Get rid of the 'file' concept for sourcecode!

Friday, July 18, 2003 11:00 AM by andy
Nice idea that would probably work well in some situations but I'm not sure how practical it would be for web applications.

# re: Get rid of the 'file' concept for sourcecode!

Friday, July 18, 2003 12:25 PM by Doug Thews
I would have thought we'd have moved to the document repository scheme by now. I was hoping that was what's now SharePoint was going to give us.

# re: Get rid of the 'file' concept for sourcecode!

Friday, July 18, 2003 1:58 PM by Nino Benvenuti
SharePoint Portal Server can serve as a document repository; however, were you thinking of document == source file, Doug ?

# re: Get rid of the 'file' concept for sourcecode!

Friday, July 18, 2003 2:39 PM by Pete
Have a look at some of the interactive source and intentional programming stuff at http://aisto.com/roeder/paper.

# Roland Weigelt

Friday, July 18, 2003 3:53 PM by TrackBack
Roland Weigelt

# CVSNT will have SQL Server support soon

Sunday, July 20, 2003 6:52 AM by Tom
I stopped using VSS a long, long time ago, not only because it corrupted my files one too many times, but because it supports file locking and CVS's free tools like TortoiseCVS and ViewCVS are much, much better. Does VSS have shared locks now? If VSS still exclusively locks files by default via VS.NET, it doesn't matter.

Money and time spent on VSS and Vault is a waste.

http://www.cvsnt.org

# And Intelligently Understood Names

Sunday, July 20, 2003 4:33 PM by Lion Kimbro
When you change a function name in "refactor" mode, all uses of that function name should then change to the new function name. That is, when a function is called, it's automatically converted into a function# by the system, and just referred to by string name for the user.

# re: Get rid of the 'file' concept for sourcecode!

Sunday, July 20, 2003 10:16 PM by Ian Cooper
A lot of Smalltalk implementations already work in this way - you save an image of the project, and work, class view like, with programming elements through the IDE. There is no notion of a file. I have not seen and source control systems for Smalltalk though that allow you to track back through changes to elements in the image.

# That's nothing new

Sunday, July 20, 2003 10:28 PM by Stefan Haubold
There are IDEs that work this way. Check out the Smalltalk environments, e.g. IBM VisualAge for Smalltalk or even VisualAge for Java. Working in such an Environment indeed provides many benefits when searching or following references. It's nice. I worked several years with VisualAge for Java and found it very comfortable. Much better than what JBuilder or Netbeans had to offer 5 years ago. Very sad that VA couldn't keep up with the JDK updates ( it was a closed environment hardwired to a specific JDK version). Because of that we had to move on to inferior IDEs.

# re: Get rid of the 'file' concept for sourcecode!

Sunday, July 20, 2003 10:33 PM by Frans Bouma
Very good feedback! I didn't know it was already common knowledge in the smalltalk world, I never used smalltalk myself...

Knowing that smalltalk IDE's have had this feature for years already, makes it even more weird why current IDE's for other languages still use the file concept.

# re: Get rid of the 'file' concept for sourcecode!

Monday, July 21, 2003 3:15 AM by Eric Sink
The file concept remains because so many of our existing tools assume it. To switch, you have to provide the world with a *complete* toolset that works as well as the set we've got now.

Oh, and before that, you have to somehow create widespread dissatisfaction with the status quo.

# re: Get rid of the 'file' concept for sourcecode!

Monday, July 21, 2003 3:22 AM by Frans Bouma
Eric: the current concept of a 'file' is already a view of sectors on a harddisk. With the plugin system of the filesystem stack you can create a FS driver for the repository if you truly want backwards compatibility.

It's true that if it ain't broke, don't fix it is written all over it, but I also think that when a major IDE vendor (like MS) introduces it, plus with all the benefits that come with the concept, I think there will be a market for this. But it's a long road, admitted.

I wonder though how MS will set up WinFS in longhorn: after all it's a database which provides views ('files') of the objects inside the database, which can (IMHO) be compatible with the concept of the code element of my blog.

# re: CLS Compliance testing is useless

Monday, July 21, 2003 6:53 AM by Jesse Ezell
unsigned integers are NOT CLS compliant. The C# compiler is correct.

"Most of the members defined by types in the .NET Framework class library are CLS-compliant. However, some types in the class library have one or more members that are not CLS-compliant. These members enable support for language features that are not in the CLS. The types and members that are not CLS-compliant are identified as such in the reference documentation, and in all cases a CLS-compliant alternative is available. For more information about the types in the .NET Framework class library, see the .NET Framework Reference."

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconwhatiscommonlanguagespecification.asp

# re: CLS Compliance testing is useless

Monday, July 21, 2003 7:01 AM by Frans Bouma
Well, the UInt32 structure exposes an uint member. All fine, but why isn't an Int64 used internally and externally?

When you have these kind of types in your core library, you define more than 1 library and not one: the CLS compliant one and the non-CLS compliant one.

It's also bogus testing. You test for type compliance, but what does that mean? Several types in the .NET library expose overloaded operators. These are PART OF the type. However, not usable in f.e. VB.NET.

# re: CLS Compliance testing is useless

Monday, July 21, 2003 7:15 AM by Jesse Ezell
It is fine to have non-cls compliant members, you just need to make sure that everything can be accomplished without them, just in case a language does not support one of your method signatures.

IMO, VB does to much in the background and doesn't give enough control over this type of stuff. I would be wary of using it for such projects. Apparently, the MS guys didn't think VB should be used for creating CLS compliant programs either, or they would have supported the CLS compliant attribute... So, moral of the story, use C# if you are working projects where you are concerned about Types. VB.NET is very loose with them (I guess some people do actually consider that a "feature," but I'm not one of them :-) ).

# re: CLS Compliance testing is useless

Monday, July 21, 2003 7:23 AM by Frans Bouma
'a' language... I think that definition is too vague. 'a MS language' is better. After all, if I define a new language for .NET, and it doesn't support 64bit integers, it can't use a lot of code since Int64 is CLS compliant but not according to my new language. :)

So, VB.NET apparently forced this uint != CLS Compliance crap to exist. How thoughtful.

# re: CLS Compliance testing is useless

Monday, July 21, 2003 7:32 AM by Patrick Steele
Jesse,

To be clear, yes, you can use non-CLS types in your application. However, if you want to be CLS compliant, you can't publically expose any of those types.

# re: CLS Compliance testing is useless

Monday, July 21, 2003 7:34 AM by Jesse Ezell
Then your language isn't CLS compliant :-). However, just because it didn't have a "long int" or some language specific version of int 64 doesn't mean it wouldn't work. It should be able to use Int64 directly if it supports even the most basic type stuff from the CLI.

# re: CLS Compliance testing is useless

Monday, July 21, 2003 7:34 AM by Patrick Steele
Frans,

VB.NET really can't use unsigned ints. Sure, you can define vars of type UInt32, but once you try and do any operations with them (adds, substracts, even assignement) VB.NET complains because it doesn't know how to convert 'ints' to 'uints'.

# re: CLS Compliance testing is useless

Monday, July 21, 2003 7:38 AM by Jesse Ezell
Patrick, as long as you have CLS compliant ways to do everything, it doesn't matter much whether the rest is fully compliant (IMO). CLS compliance is a good test to make sure you won't run into any hairy situations, but I don't see any reason to force yourself to ONLY use CLS specific stuff if you run into a situtation where it makes sense to do otherwise.

# re: CLS Compliance testing is useless

Monday, July 21, 2003 7:43 AM by Patrick Steele
Jesse, I think we're in agreement on this stuff.

I think CLS-compliance really only needs to be achieved by component/tool authors. If you're just coding an internal application or something simple for yourself, who cares about CLS-compliance? It's only an issue if you want to make a library or utility that will want to integrate with another .NET language.

# re: Get rid of the 'file' concept for sourcecode!

Monday, July 21, 2003 12:02 PM by Scott Galloway
I've used VisualAge for Java, got to say, it really sucks when you actually want to get at the files - web applications are the most obvious example. It becomes very tricky when you have to work with lots of files - like images, stylesheets etc...

# re: The Blob!

Tuesday, July 22, 2003 8:49 AM by Dennis v/d Stelt
Hahahaha...

I wasn't drinking, but why didn't you say I had to print this out and read it on the toilet? No I've shitted my pants from laughing!!! :)

# re: Get rid of the 'file' concept for sourcecode!

Tuesday, July 22, 2003 9:04 AM by Yiyi
When using Eclipse with Java, mostly you are dealing with projects, packages, classes, interfaces not folders and source files.

# re: Re: Am I the stereotypical VB Programmer?

Wednesday, July 23, 2003 9:51 PM by Nice Guy Eddie
<<an editor that helps you more than any other editor on the planet and with a compiler that is faster than any C or C++ compiler out there>>

I think you are talking about Delphi.

<<tortured for years with C, Pascal>>
when was the last time he tried Delphi. It is still the best dev tool for win32.

I am new to this blog but a long time programmer in vb that switched to delphi 3 or so years ago.
VB.net is just included to keep the .net learning curve down for the beginner Vb programmers . i am sure anyone with some real experiance will move to C# ,after all it was written by the same guy that wrote Delphi and is the best thing (along with the framework) that microsoft have done for years. c# is going to be huge.

# re: So Microsoft, when is VS.NET 2002's service pack released?

Wednesday, July 23, 2003 10:53 PM by Robert McLaws
What more do you REALLY need to see that MS is committed to their customers? Geez man. You sure do complain about MS a lot. Ever hear the phrase "biting the hand that feeds you?"

You could get a lot more done with MS if you had a more positive attitude. They're still figuring some of this stuff out, just like we are.

# re: So Microsoft, when is VS.NET 2002's service pack released?

Wednesday, July 23, 2003 10:58 PM by Frans Bouma
What's wrong with critizism? I'm not biting the hand that feeds me. If I can't ask Microsoft why there isn't an SP for VS.NET 2002 released, the world really is in trouble.

# re: To Entity.Save() or not to Entity.Save()?

Thursday, July 24, 2003 1:21 AM by Thomas Tomiczek
YOu are right.

More crreclty. Jimmy is wrong.

He should have handled both forms with different transactions, diferent objects, different caches etc. Then he never would get the problem, and both things could be commited separatly.

# re: To Entity.Save() or not to Entity.Save()?

Thursday, July 24, 2003 1:24 AM by Frans Bouma
The problem with one cache per appDomain still exists though if you use separate caches. (or to be more precise: when a cache is used, it will fall apart when multiple appdomains are accessing the same shared repository)

# re: So Microsoft, when is VS.NET 2002's service pack released?

Thursday, July 24, 2003 2:33 AM by Fabrice
Hey Robert, since when is being critic bad???
Do you eat everything your holy "hand that feeds you" decides to give you?

# re: So Microsoft, when is VS.NET 2002's service pack released?

Thursday, July 24, 2003 2:44 AM by Don McNamara
Frans,

Can you go into a little more detail about what you don't like about VS 2003? We are about to make the switch...

Thanks
Don

# re: So Microsoft, when is VS.NET 2002's service pack released?

Thursday, July 24, 2003 3:25 AM by Frans Bouma
Don: if you're developing in VB.NET, I'd recommend you read Greg Robinson's blog and his blogs about vs.net 2003 and VB.NET.

In C# (which I use) I have problems with intellisense and the debugger. The debugger is sometimes failing to show membervariables but shows empty rows. Debugging is then useless. This happens to me 2 a 3 times a week. I have to restart the machine and even then it is kind of random.

I discovered that I don't use the features that come with vs.net 2003 that often. The intellisense 'prefered entry' feature isn't always useful and the stubbers of interface code is useless, simply because it doesn't copy the comments you specify with the interface declaration.

# re: So Microsoft, when is VS.NET 2002's service pack released?

Thursday, July 24, 2003 3:33 AM by Load of crap
Microsoft's support for current customers of the .NET Framework 1.0 and VS.NET 2002 is a complete load of *crap*!

First off, they don't even acknowledge a fraction of the bugs that are in the products. The only thing coming out of Redmond, as always, is upgrade! upgrade! upgrade! That will fix all your woes. Yeah, right. Give me a break M$.

Let me tell you something Microsoft. I'm a consultant who works for major companies who adopt .NET technologies. It's *amazing* in a lot of these shops that they adopted .NET in the first place. Those who have, for the most part, have adopted version 1.0 (and if I'm lucky, SP2 for the framework).

Most don't have any interest at all upgrading to the next version of VS.NET simply because they want to take the "wait and see" approach. You know, M$, the same one they want to take with your operating systems (and that's why Win2k and NT4 is so widely used, despite the all the new features of XP and Win2k3).

If we could get a fricking service pack with *real* fixes in it (what the hell was SP1 for the framework about, anyway? what a waste), then at least I could work hard to convince the management types to keep up-to-date with the latest fixes (usually because they do it out of habit to fix all the bugs in your other products).

If this is the way M$ intends to be, than I for one (and I know a lot of other developers feel this way), think it's a load of crap. C'mon M$ -- support your existing products and don't force people to upgrade to get the latest bug fixes.

M$, you've come a long way from what you used to be, but I'm afraid you're taking a step back with the (lack of) support you are giving your customers.

# re: So Microsoft, when is VS.NET 2002's service pack released?

Sunday, July 27, 2003 10:56 AM by whoami
Robert,

Ever heard of the prase:
'Customer is king' ?

We don't get fed by Microsoft. MS is just one of the firms that deliver IDE's for .NET (Borland is another one).
If you want to use a good product, then critizism is a way to get things done.

If you buy a new car, wich has some production faults, but in a new edition, or a new version of that type of car, these glitches are fixed, what do you expect? You expect that they will fix your car. You don't expect that the manufacturer says: "Oh, we fixed that in our new version, if you want it fixed, buy the new version of that model".

# re: Don't try to re-invent the browser, please.

Monday, July 28, 2003 1:30 AM by Frank Nestel
All pretty windows centric. I cannot see that the imitation of one particular proprietary form tool (that is what mono is intended to be) shall be the bright future. I rather see this as an argument for independant open source form languages. XUL could be it.

Another question is, how comes that it is often easy to convince use to use the so restricted browser GUI. Concepts like collecting favourites and sending links via e-mail to someone else would all needed to be reinvented by a GUI of the future.

# Getting rid of the 'File' Concept for Source Code?

Tuesday, July 29, 2003 2:58 AM by TrackBack

# VSIP Corroboration

Tuesday, July 29, 2003 7:11 PM by TrackBack

# Hear hear!

Thursday, July 31, 2003 8:40 AM by Mads Nissen
Very much agreed. The (language)discussion is going loud around here these days. This is a point I'll definately use in the office wars:)

# re: Why Edit & Continue is a bad thing

Thursday, July 31, 2003 9:07 AM by RichB
Completely disagree. If I'm testing my application and an exception fires because, say I'd used the wrong type of slash in XPath, then I want to fix it, then carry on. This results in a quick, trivial change, rather than the 30-40 seconds required to stop the debugger, let VS.Net rearrange all it's docked windows, make the change, fire up the debugger. Navigate through the application to the same spot the exception fired so that I can carry on testing from where I left off.

I would agree that pure logic should not be built on the fly - it should take a more formal approach, but stupid coding mistakes need to be squashed rapidly while testing your code.

Unit Testing (as in xUnit) doesn't help in most of these situations if the coding error was part of the presentation layer.

I've written parsers, web apps, win apps in C# all with NUnit during the last 3 years and regularly wish I had E&C.

# Why Edit and continue is a GOOD thing

Thursday, July 31, 2003 9:25 AM by TrackBack

# re: Re: Am I the stereotypical VB Programmer?

Thursday, July 31, 2003 3:26 PM by RichB
With is a bad construct because it discourages developers from refactoring their code. If the type expression the With statement refers to contains one or more periods, then the developer should really be thinking about pushing the With-block into the object that it operates on.

In other words, the method with the With-block has too much intimate knowledge of the other classes specified in the With statement type expression.

Having said that, I believe that refactoring should not be a prime concern for any VB developer - I believe that VB should become a much more RAD language used as very rapid glue code for components provided by other vendors. And because of this, I believe that With does indeed have a place in the VB arsenal.

BTW - I was a VB-dev before VB had the With statement...

# re: Why Edit & Continue is a bad thing

Thursday, July 31, 2003 5:23 PM by Paul Gielens
Hehe VB crap... debug, change your program, serious hang, terminate the app and IDE shuts down as well.

BOOM, al changes are lost... what the hell did I just do?

Welcome in the world of crappy programming pratices. Please MS leave Edit & Continue out of C#. Disfunctional coding pratices should have their own disfunctional language (VB), let it not be C#.

My 2c

# re: Why Edit & Continue is a bad thing

Thursday, July 31, 2003 6:20 PM by HumanCompiler
Blame the languages for good and bad all you want, but it still all depends on the person behind the keyboard! ;)

# Frans Bouma's says Edit and Continue is a bad thing

Thursday, July 31, 2003 9:21 PM by TrackBack

# re: A pattern in patterned confusion.

Friday, August 01, 2003 7:17 AM by Thong Nguyen
I completely agree Frans. In fact, one of the requirements for being a design pattern is that it *must* be used by more than one group of people. You simply can't invent something new yourself and call it a pattern unless it's something other people have come up with as well.

# More on the badness of E

Friday, August 01, 2003 7:29 AM by TrackBack

# re: More on the badness of E&C and how to debug software.

Friday, August 01, 2003 11:40 AM by Robert Hurlbut
Very good points and reasons for NOT using Edit and Continue. This is exactly what unit testing has helped us get away from.

# re: Why Edit & Continue is a bad thing

Friday, August 01, 2003 2:09 PM by Charlie Zimmerman
If you think it's bad, don't use it. But put it in there for the people who like it. I want freedom, not constraints imposed on me from the Best Practices Police.

# re: Why Edit & Continue is a bad thing

Friday, August 01, 2003 3:40 PM by Tosh Meston
I am kind of amazed at the negative reaction that people are showing for EnC. I don't understand it. How does fixing a stupid bug while debugging and without recompiling encourage bad programming practice? That kind of thing happens to everyone no matter how much forethought you put into your design.

# re: Why Edit & Continue is a bad thing

Friday, August 01, 2003 3:42 PM by Frans Bouma
Tosh: read my other article about debugging I posted today. You'll understand why.

# re: More on the badness of E&C and how to debug software.

Friday, August 01, 2003 7:44 PM by Darren Neimke
Frans, nice stuff!

My favourite "Plain old stupidity bug" used to be forgetting this line:

objRs.MoveNext()


:-)


# re: More on the badness of E&C and how to debug software.

Friday, August 01, 2003 11:03 PM by LarsBerg
This argument misses the main reason I use edit and continue. I'm an old Scheme programmer, and I just use it like a REPL. When I'm using systems that don't yet have any documentation and are just an API and a pile of messy source, it's an easy way to new up some objects, play around with them, and see how they work.

Edit and continue isn't just about bug fixing; for me, it's also about exploration.

But then, maybe I'm just an old Scheme programmer and don't know any better :-)

# re: More on the badness of E&C and how to debug software.

Saturday, August 02, 2003 11:36 AM by James Robertson
see:

http://www.cincomsmalltalk.com/blog/blogView?showComments=true&entry=3237275853

for my response

# re: More on the badness of E&C and how to debug software.

Saturday, August 02, 2003 1:23 PM by Doug King
Come on. What is edit and continue but an automation of the stop, edit and recompile under the covers. I like automation and abstraction, it saves me time. That's why I like code generators. And if you think about it, the same arguments could be applied to code genrators, so there is a bit of a contridiction here. E&C is just another tool to be used at the appropriate times. If you want to stop bad programming habbits in programmers that don't know what that appropriate time is, well then we need to attack some other features of the IDE as well. This spills over into a much bigger philisopical debate over associating ones value as a programmer with the tool that one uses - as in the statment "I am a VB programmer", or "I use code generators". If a language/IDE combination such as VB encourages the use of wizards, code generators, automation tricks, and other 'crutches' to progam without understanding what the end result is, it will get a bad reputation among more diciplined programmers that use another tool (in this case c#). Try on this statment for size "I program in notepad". What does that say? It is language agnostic - notice I didn't mention any language. It could be VB, C# or assembly. So lets assume I am programming VB in notepad. The edit, compile and debug process would be even more painful, requiring me to be even more diciplined. Why in the hell would I want to do that when I could use the IDE? Just for some macho bragging rights?

# re: More on the badness of E&C and how to debug software.

Sunday, August 03, 2003 5:55 AM by Frans Bouma
Doug: E&C isn't a tool you use for 'testing'. There you go wrong. If you miscoded a statement (used + instead of - f.e.) and you see that in the debugger, you fix that in the code and move on. Do you NEED the debugger to verify that the '-' you just inserted at the spot of the '+' is the correct operator? If you do, you do not understand what code SHOULD be there at that spot. That's the point. If you need E&C to verify if that fix (the '-') is correct, you are using trial and error to code you through an algorithm. That's the point I was trying to make: if you KNOW what you are doing, you can develop software WITHOUT a debugger, because you know which statements should be on which spots in which routines.

Consider this: do you think Windows kernel developers use E&C to fix bugs? Debugging OS kernels is hard (using 2 machines/virtual machines), left alone use E&C. Still people manage to create solid, working kernels. How do they do that? Solid software design.

It has nothing to do with bragging rights. If someone says he develops software in vi or notepad I'd say he's a fool. However, every developer should KNOW/realize why he is using a given tool. Only THEN the developer can truly unleash the power of that tool, because only then the developer knows WHEN to use the tool.

# re: So Microsoft, when is VS.NET 2002's service pack released?

Monday, August 04, 2003 1:14 PM by shane
yeah, im looking for a patch to vs2002 right now, but i guess there isnt one.

I like using MS's tools, but their customer service blows. im really sick and tired of it too. VS.net is full of bugs, but they dont seem to care. it really pisses me off.

how are we supposed to get work done on time when we spend all our time trying to work around the half-assed, piece-of-crap utility known as VS.NET?

# This seems an overreaction

Monday, August 04, 2003 10:38 PM by Ben Langhinrichs
It is easy to dismiss the plain stupidity bugs, but when working on a mature product, a large amount of time spent debugging is spent on such bugs. If you add a new method and it gets halfway through a million steps of exiting code (some sort of an engine), it is a heck of a lot easier to fix and continue than to stop and get back to where you were. Granted, that is also a reflection of the tools available, but what if several human interaction steps are required to get to that point. Recreating them over and over to reproduce the situation rather than using Edit&Continue seems extreme.

Having said this, note that I don't have or use E&C in the compiler I have now, but I think the concept is well founded. The implementation is another question, and I do think it is a fair argument to say that there may be better walls for the developers to throw themselves at.

# re: Why Edit & Continue is a bad thing

Tuesday, August 05, 2003 10:24 AM by Keith Keller
I've developed with tools that don't have E&C and I can tell you this, having it saved me more time than not having it. Particularly when it takes me 1/2 the time to locate and fix the problem using E&C as opposed to having to categorize and determine the cause of the bug. An application that I work on now is what's called an Allocation Engine. It's sole purpose is to perform extensive calcs against a database to provide Oil & Gas companies with the info they need to determine what was produced and what was sold. It has no user interface and hundreds of functions and objects. It is written in Powerbuilder. When a customer reports a bug to us, it can literally take an entire workday (sometimes more) to figure out where the bug is and what is causing it. In order to assist us in this, we generate trace files and insert message boxes. Powerbuilder has NO Edit and Continue. Under the same scenario, using VB6, it would have taken us roughly 1/2 the time to locate and fix the bug because some of these bugs don't pop up until after thousands of lines of code have executed and several minutes or an hour has gone by. By inserting a breakpoint (which PB does have) near the area where we believe the bug originates. We then begin stepping through the code and "watching" the values. Once we see what's happening, (using E&C) we can easily change that line, step into it, check the result and then continue on with the allocation.

The real beauty here is that "IF" you don't like E&C, then don't use it.

# re: More on the badness of E&C and how to debug software.

Tuesday, August 05, 2003 1:29 PM by Steve Tibbett
Do the Windows kernel developers use RAD tools to create the kernel? :)

It's about productivity. When I see a bug, I have the ability to fix it, and continue debugging. There's no way to convince me that I didn't just save the time I spent getting to that place in the application.

Rather than reading through your algorithm in your head, why not let the computer help you? When I'm done writing some code, I spend time in the debugger stepping through it and examining what's going on. If you wrote the code and believe it was correct, chances are that if there IS an error, the "execution engine" in your head isn't going to catch it.

Stepping through the code and examining the state things is more reliable and more effective than trying to do it in your head. And it's when you're doing that that Edit and Continue is most useful.

# re: More on the badness of E&C and how to debug software.

Tuesday, August 05, 2003 2:46 PM by Doug King
Like I said in my original comments, there is an appropriate time to use E&C as a proper time saving tool. In your scenario (kernal developers) I agree, use of E&C seems silly. But what about tweaking UI code or prototyping ideas, debugging someone else's code, refactoring, etc. E&C is just another tool that compresses the edit, compile, run-code-in-IDE cycle. If you have no need to do the last step, run-code-in-IDE, then E&C is not apporpriate. If there is a good argument to NEVER run-code-in-IDE, instead do unit tests, etc., then E&C could be seen as encouraging bad practices. I submit that this is the real crux of this debate.

# re: We're a labeled group now!

Friday, August 08, 2003 3:18 PM by Naim Ru
Personally, I side with the CG’ers and buy into that vision, though I think it may take many decades--if not centuries--to get “there”. Where is “there”? To me, it is the point where over 90% of all programming is via specification rather than coding.

To those defending the need for a seasoned developer I say that they are 100% correct, but for the wrong reasons. Creating correct specifications for a code generator to generate any non-trivial application will remain a specialized skill for a long-long-time to come. This kind of executable specification becomes just another higher level of programming.

The point is NOT that code generators eliminate programming. Rather, the point of MDA, code generation, and executable-model initiatives is that (1) in the short-term they eliminate a lot of tedium (and errors) in writing with our current crop of relatively low-level programming languages (Java, C#, VB, XSLT, PL/SQL -- T-SQL, ABAP, etc.) and (2) in the longer-range vision, allow for developers to remain at a higher level of abstraction--much closer to the actual problem domain--rather than constantly dealing with the particulars of the implementation platform.

Will we always need lower-level systems programmers? Into the foreseeable future, yes, probably. However, our profession has already evolved from designing circuits and flipping switches (ENIAC), to bit twiddling in machine language (punch-cards anyone?), to assembly languages, to lower level procedural languages such as C and Forth, to OO such as C++, Java, and C# and now the massive frameworks/environments supporting business apps (J2EE App Servers/.Net). It seems only reasonable to observe that the bulk of programming will continue to evolve to higher-and-higher levels of abstraction as the tools and the basic building blocks become more refined.

# re: We're a labeled group now!

Friday, August 08, 2003 3:33 PM by Naim Ru
One more point: remember that if you program in anything other than raw machine language, you are already using a code-generator -- the compiler or VM!

The "code generation crowd" is simply adding another layer of compilation/interpretation on top of the multiple layers which already exist. There is no reason for me to believe that this layering needs to stop at the current state-of-the-art.

# Internet Explorer.NET

Sunday, August 10, 2003 6:58 AM by TrackBack
In my recent articles I've explored the concept of the Universal Canvas, a term made popular by Microsoft when it launched .NET in 2000.

# re: Sorry for the lack of updates...

Monday, August 11, 2003 3:02 PM by Jimmy Nilsson
Thanks for the pointer Frans and good luck with your 'crunch-mode'! As you know, I'm very much behind with my blogging too. I have at least two blog posts that you have commented very well and which I have to write about again. In a week or two...
:-)

Best Regards,
Jimmy
###

# re: Sorry for the lack of updates...

Monday, August 11, 2003 4:47 PM by Frans Bouma
Thanks for the support, Jimmy! :) I hope the painting of the house is progressing as planned :)

# re: Sorry for the lack of updates...

Monday, August 11, 2003 5:41 PM by Jimmy Nilsson
Perhaps not progressing as <i>planned</i>, but at least progressing <i>enough</i>.

Ah, I found another area for applying Agile/XP. "What is the smallest amount of painting that would possibly work?"
:-)

# re: Sorry for the lack of updates...

Thursday, August 14, 2003 12:19 PM by free4all
Frans will this be a public beta?

Have you decided on a pricing structure yet?

Cheers

# re: Sorry for the lack of updates...

Thursday, August 14, 2003 12:21 PM by Frans Bouma
The beta won't be public, but a select group of people will beta-test the betaversion. The estimated 'street' price is 170EUR excl. VAT. for a site/department license, thus 4 developers? 1 price :), and the runtime license is of course free.

# re: Stop ranting about the blaster worm

Friday, August 15, 2003 4:52 AM by Stefan Holdermans
Well, +1 for you here, Frans.

I received a lot of e-mails the last few days from different Microsoft channels, providing some very useful information on the whole Blaster thing. And yes, it made me wonder why, in spite of the early availability of patches, the worm could do so much damage over the last few days.

So, I totally agree with this entry from you.

Admittedly, I always placed you more or less in the anti-Microsoft camp. I guess, that's because some of your first postings in the DOTNET-CLR discussion group of DevelopMentor, which were actually the first words I ever read from you. Back then, if I remember correctly, you'd just started developing for the .NET platform. Those first postings were quite critical and, I still think, far too agressive in their lack of nuances. So, now I'm kind of ashamed for hanging on to that first impression---and I apologize: you seem quite objective to me now.

And when MS screws up, I count on some serious ranting from you towards Redmond: just to illustrate your objectivity. ;)

# re: Stop ranting about the blaster worm

Friday, August 15, 2003 4:59 AM by Frans Bouma
I started developing with .NET in march 2002 :P But I agree, sometimes ranting can be counterproductive when you want to make impressions, however even rants do get heard. I'm not in the anti-microsoft camp, however due to .NET I left the pro-microsoft camp which was a thing I never thought possible :)

It will be all right, when whidbey will be released.

I also think MS should have done more to protect users. I mean: WHY isn't there a free add-on for windows 2000 which simply acts as a firewall like in XP? They have the code already there, it's in XP, why do I have to buy an expensive firewall for windows 2000? Just to block some ports. That's the kind of thinking that's still not there in Redmond. It will be there, but not at the moment or at least too less :) Ah well.. nothing's perfect :)

# re: Sorry for the lack of updates...

Friday, August 15, 2003 5:16 AM by free4all
I like the price Frans, I was hoping I wouldn't be priced out of the market and this sounds more than generous. I have looked at other products from thona and co but the cost is astronomical. For a small coding shop with an even smaller budget this is ideal.

Once the "select" group has finished beta testing will there be a try before you buy?

# re: Sorry for the lack of updates...

Friday, August 15, 2003 5:25 AM by Frans Bouma
:) Yes there will be a 'demo' version available, so you can try it out. The competition costs a fortune especially when you are with 2 or more developers and they can't live up the price the ask.

# re: Sorry for the lack of updates...

Friday, August 15, 2003 5:58 AM by free4all@dootdoot.co.uk
Champion I have a project waiting to go but I'm holding out so I can try your software. I'm hoping this is a cure for all my DB headaches. Can't wait to try it out!

# re: Sorry for the lack of updates...

Friday, August 15, 2003 6:30 AM by Frans Bouma
I hope it won't dissapoint you :) If I won't make the sept 1 date, I'll mail you and you can get started with a preview version.

# Blaster worm blogging: whose fault is it?

Friday, August 15, 2003 9:14 AM by TrackBack

# re: Sorry for the lack of updates...

Friday, August 15, 2003 9:31 AM by free4all@dootdoot.co.uk
Thanks Frans that would be great. I'm sure you'll not disappoint if your previous work is anything to go by!

# re: Stop ranting about the blaster worm

Friday, August 15, 2003 10:34 AM by Travis
<i>"If you as a sysadmin did your job well"</i><br><br>If MS did their job well, this would not have even been an issue in the first place. Do it right the first time, or not at all.

# re: Stop ranting about the blaster worm

Friday, August 15, 2003 11:52 AM by Joe Grossberg
"who needs a sysadmin with perfect software"

I'm sure a lot of sysadmins would resent that.

Without MS making the stupid and dangerous decision to have things like RPC enabled by default, sysadmins could concentrate on more important things like, well, administering the system.

# no firewall in windows 2000?

Monday, August 18, 2003 7:49 AM by Stefan Mensink
Actually, Windows 2000 does have a free firewall. How to configure it can be read at http://support.microsoft.com/?id=309798

# re: Sorry for the lack of updates...

Wednesday, August 20, 2003 2:28 PM by Bruce Onder
I'm sort of in the same boat. I have a project that I would love to use llblgen pro on. If there's still room in your public beta, let me know! ;-)

bonder@digitalarcana.com

# re: Sorry for the lack of updates...

Wednesday, August 20, 2003 2:35 PM by Frans Bouma
Bruce: it's a private beta, not a public beta, sorry :) At the moment the beta testing is going well, no need for extra hands, but thanks for the offer. :)

# re: Sorry for the lack of updates...

Wednesday, August 20, 2003 3:37 PM by Bruce Onder
Oops, I meant to write "Private" not "public." :) Oh well! Do you imagine the beta taking much longer than two months or so?

# re: Sorry for the lack of updates...

Wednesday, August 20, 2003 3:43 PM by Frans Bouma
Bruce: Naah we're currently very close to release candidate quality actually :) Most big bugs are ironed out in the last couple of days. What's left is documentation and the glitches that pop up in the next couple of days. :)

# re: Sorry for the lack of updates...

Thursday, August 21, 2003 1:37 AM by Stijn Gysemans
Hi Frans,
I'm planning to buy it, but what do you mean with runtime license free?
You can develop and use it for free? only if you publish it on a webserver, you've got to pay?

# re: Sorry for the lack of updates...

Thursday, August 21, 2003 2:28 AM by Frans Bouma
Stijn: You have to pay for a license to use the tool, and the tool generates code which targets the runtime library that comes with the tool (a set of base classes). Some competitors also ask a fee for usage of the runtime, I don't. If you have payed for a license, you can generate as much applications as you want and you don't have to pay for a runtime license.

# re: 'nGen' is NOT related to LLBLGen or me

Thursday, August 21, 2003 5:41 AM by Paul Gielens
ventilate my experiences with this 'competitor'

I'll proof them wrong within a few weeks time


Goosebumps all over the place... good luck during the crunching period. Sounds exciting!

# re: 'nGen' is NOT related to LLBLGen or me

Thursday, August 21, 2003 5:42 AM by Frans Bouma
Thanks Paul! :)

# re: 'nGen' is NOT related to LLBLGen or me

Thursday, August 21, 2003 8:33 AM by Zef Hemel
Kinda odd to call such a tool just like a tool already included in .NET...

# re: 'nGen' is NOT related to LLBLGen or me

Thursday, August 21, 2003 9:11 AM by Darrell
Kick some a**, Frans! BTW, how much is LLBLGen pro (or 2.0) gonna cost? I gotta start greasing the wheels around here.

# re: 'nGen' is NOT related to LLBLGen or me

Thursday, August 21, 2003 9:34 AM by Frans Bouma
Darrell: 170 EURO excl. VAT for a site/department license, so one license per team. :)

# re: 'nGen' is NOT related to LLBLGen or me

Thursday, August 21, 2003 10:45 AM by Emmet
Frans, I know my team is excited about LLBLGen Pro. We hope to see it soon.

# re: 'nGen' is NOT related to LLBLGen or me

Thursday, August 21, 2003 7:19 PM by JosephCooney
Like Zef I can't belieive someone would give something the same name as a tool already in the .NET framework. Maybe I should make a webcontrol called ILDASM or something.

# re: 'nGen' is NOT related to LLBLGen or me

Saturday, August 23, 2003 8:35 PM by Steve Johnson
Am I missing something here? how does the name ngen in any way resemble LLBLGen

# More on SQL Server Auto-Updates

Sunday, August 24, 2003 11:35 AM by TrackBack

# <br> Small Query Blog

Monday, August 25, 2003 6:50 AM by TrackBack

Small Query Blog

# re: LLBLGen Pro release date set

Tuesday, August 26, 2003 9:58 AM by Bruce Onder
Yee haw! :)

# re: LLBLGen Pro release date set

Monday, September 01, 2003 10:55 AM by Can't Wait
So, it's the 1:st.. Where is it?! ;)

# re: LLBLGen Pro release date set

Monday, September 01, 2003 10:58 AM by Frans Bouma
On my harddisk :) It will be later this week, probably friday. Stay tuned. We're in release candidate 2 now, pretty close to the final product. :)

# re: LLBLGen Pro release date set

Tuesday, September 02, 2003 8:31 AM by Wondering
I'm just curious about the remoting support that will be available for the LLBLGen Pro. Will the generated classes be accessible by remotable functions and methods?

# re: Get rid of the 'file' concept for sourcecode!

Thursday, September 04, 2003 8:39 AM by Jérôme Tremblay
.NET gives everything we need for something better: System.CodeDom. We simply have to build an IDE that will handle the object graph directly instead of relying on those damn flat files.

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Sunday, September 07, 2003 4:55 PM by Stefan Holdermans
Congratulations!

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Sunday, September 07, 2003 5:12 PM by Frans Bouma
Thanks! :)

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Sunday, September 07, 2003 5:44 PM by Kris
Just downloaded the demo :)

After executing the prog for the first time I get:
SetupMainGui::Could not load the file: 'guistate.xml' to de-serialize the previous window state back. Reason: this is the first time you run this application or you have manually deleted this file. LLBLGen Pro will use the default window state and window positions.
SetupMainGui::Complete exception: Could not find file "C:\Program Files\Solutions Design\LLBLGen Pro Demo\guistate.xml".

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Sunday, September 07, 2003 5:45 PM by Kris
Pushed the button too fast.

Just wanted to say that the eagle has landed.

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Sunday, September 07, 2003 5:50 PM by Frans Bouma
That's normal behaviour, Kris :) It informs you that it couldn't load the file, and created a new one for you :)

have fun with the demo :)

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Sunday, September 07, 2003 7:13 PM by Kim (Kman)
Congradulations Frans!

LLBLGen has been great for many projects and now LLBLGen Pro looks great as well! You have been an asset to all of us. Your hard work and dedication is appreciated.

Now, I have some studying to do :)

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Monday, September 08, 2003 3:12 AM by senkwe
Thanks Frans! I've been waiting patiently for LLBLGen Pro, thanks for keeping the price reasonable. You have a surefire winner on your hands.

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Monday, September 08, 2003 4:05 AM by Nielsz
Well, congratulations! As soon as I start to develop in .NET; i'll start to use it ;)

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Monday, September 08, 2003 4:16 AM by Frans Bouma
Heh Nielsz :) And you'll never know when that will be. PHP isn't everything you know ;)

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Monday, September 08, 2003 12:03 PM by free4all@dootdoot.co.uk
Congratulations Frans! Been playing with the demo all day and have to say I'm impressed. Just waiting for confirmation from the boss now so I can buy the full version.

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Monday, September 08, 2003 2:10 PM by Paul Gielens
Impressive, so easy to use and most helpful documentation.

Just a quick question... what about inheriting the generated entity classes? What are you thoughts about inheritance within the generated framework?

btw nice implementation regarding lazy loading and COM+!

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Monday, September 08, 2003 2:26 PM by Frans Bouma
thanks Paul!

Check out the two class scenario generator configurations, these will generate 2 classes (using different templates) per entity: one with the core logic (*EntityBase) and one for your code (*Entity). When you update your project, you just re-generate the base classes and keep the inherited classes. :)

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Monday, September 08, 2003 3:12 PM by Abdu

Please add a demo aspx sample that uses the demo Northwind classes. Any product that forces me to read too much docs before I can have a good feeling about it will get me to lose interest pretty quick. Put a grid that does delete, insert, edit so that in 5 minutes, I can see results and know how the product works.

I am sure others are impatient like me :)
llgl open source is a good product. Congrats.

Abdu

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Monday, September 08, 2003 3:27 PM by Frans Bouma
Abdu: I know :) a sample app will be up in a few days with a grid, some transactions etc. All the code snippets in the docs are from a test app that will be transformed in this example btw, so you can get started pretty quick, but an example app is definitely planned, however I ran out of time to write that before the deadline. However I'll add one in the next few days.

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Tuesday, September 09, 2003 5:45 AM by Stefan Mensink
Congratulations Frans! If I ever get to developing using .NET I'll keep your tool in mind ;-)

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Tuesday, September 09, 2003 5:53 PM by Jason Bunting
I use LLBLGen all the time and am anxious to try this out (hopefully within the next 2 weeks). If it is as awesome as I am assuming, I will definitely be purchasing this puppy!

Thanks!

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Tuesday, September 09, 2003 10:35 PM by Billy
How will you make money selling it so cheaply? I would think that support alone would kill you.

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Wednesday, September 10, 2003 3:16 AM by Frans Bouma
Billy: I don't have to pay a large amount of developers: I wrote the complete tool myself, we funded the development ourselves, and therefore we can offer the tool for a reasonable price and still make money. :)

Jason: I'm sure it won't be a dissapointment :)

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Wednesday, September 10, 2003 10:59 AM by Abdu
I am looking forward for the sample. Please let us know here. Thanks!

Abdu

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Wednesday, September 10, 2003 11:03 AM by Frans Bouma
Abdu: okidoki :) I'll update the blog as soon as it is ready. Currently the datagrids do not co-operate as I intented ;) so it will take another day or so to get it polished :)

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Thursday, September 11, 2003 12:08 PM by Matt
Frans,

I'm so excited about this application, but I'm having a hard time putting it to work. I have to do a quick 1-page site to demonstrate some problem with a proxy server, so I figured it would be a perfect time to play around with the demo version while I'm waiting for my boss to buy the full version for us (which we are definitely doing, btw).

I'm trying to create a Class Library, following the directions in your help file, and the thing won't compile. I swear I'm not a complete idiot about these sorts of things, but here's what happens:
--Create new Library project in VS.NET (2002). Called it cNorthwind
--Generate code. General Config/VB.NET
--Copy all code into new project folder. Select and include all folders/files in VS.NET, so they're part of the project. Add the references that you specify. (SQLServer, ORMSupportClasses, System.EnterpriseSErvices)
--Try to compile. Boom.

The problem is that all the errors are due to missing classes that are trying to be imported, i.e. "Imports SD.NorthwindDAL.FactoryClasses", etc.

It's the classic chicken-or-egg problem... The classes won't compile if they can't reference other classes that need to be compiled, which themselves won't compile because yadda yadda yadda.

I'm sorry if I sound like a complete idiot on this, but I was able to make the last (free) version work.
:-P

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Thursday, September 11, 2003 12:15 PM by Frans Bouma
Matt: It's a faq, it's a thing with VB.NET: if you define a namespace that is different from teh name of the vs.net project, visual studio (or the vb.net compiler) will prefix each namespace name defined with the name of the vb.net project. Here's the faq on the customers area, I'll also add this one to the general faq on the site. If this doesn't help, mail me directly. :)
---
When I compile the VB.NET code I generated with LLBLGen Pro, I get all kinds of errors about missing namespaces, what's wrong?

You have specified a different name as root namespace than the name of your Visual Studio.NET VB.NET project. When this is the case, Visual Studio.NET will prefix each namespace with the VS.NET project name. See the note in the LLBLGen Pro documentation: Using the designer / Generating Code, at the bottom.
----

# re: inheritence

Sunday, September 14, 2003 3:41 PM by Marco
Nice tool!

Does it support inheritence (with multiple tables)? for example:
Article (table Article)
ArticleExtended (table ArticleExtended, 1-1 link to table Article)

The ArticleExtended class should also be returned as Article.


Regards,

Marco

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Sunday, September 14, 2003 3:52 PM by Frans Bouma
Not at the moment no. The reason for this is that inheritence is not a concept that is definable in a relational model. If you have a 1:1 relation between two tables, you can also merge them to one table in theory.

We decided we should stay close to the relational theory and have created a tool that is based on the theory that is also the base of the E/R model, the base of every relational database schema, in other words: a relational model should be definable with solely DDL. Inheritence is then almost impossible to define (you need values in columns to distinguish classes in the hierarchy). We can always extend it in the (near) future.

It does generate mappings for all relations automatically, so if you have an extended article, Article.Extended for example will give you the extended info in your schema, it will traverse the 1:1 relation for you.

# re: Get rid of the 'file' concept for sourcecode!

Monday, September 15, 2003 8:49 AM by James
Being a smalltalk developer, I found your comment amusing :)

I've been developing with these new age features for more than 10 years. As far as I'm concerned, Visual Studio, Intellij, Eclipse, etc. They are all a major leap backwards for me.

The ability to write code anywhere in the "IDE", select it, run it, test it, debug it, reload it, modify it, without having to stop/restart is incredibly productive.

I can't understand why more people are ignorant to smalltalk.

Take my advice. Take it for a test run. Get over the syntax hurdle and embrace the past.

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Monday, September 15, 2003 6:21 PM by DM
Very Nice!

Frans,
Could you explain a little how the Dynamic Query Engine works? Are you simply building a string and sending it as the text of a Command object - or is there more to it?

TIA,

DM

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Tuesday, September 16, 2003 2:44 PM by Frans Bouma
DM: It builds a string with the SQL, using the filters, relations and fields it receives. It also builds a list of parameters to pass on to the command object for the values specified as values for the query. So the SQL is build using a stringbuilder, the values are passed in parameters :)

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Wednesday, September 17, 2003 12:11 PM by Dirk Devriendt
Excellent tool, Frans
I'll bet your wife is as happy it is finished as we are :-)

Just to keep nagging you with the same questions over and over again: I regularly develop websites for non profit orgs (in my spare time) that can't afford SQL server like my regular customers. Is there any chance you'll develop a MySql driver, using the excellent ByteFX driver for instance (http://sourceforge.net/projects/mysqlnet/)? -and if yes, is there some kind of a roadmap for future database support developments-

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Wednesday, September 17, 2003 1:13 PM by Frans Bouma
Dirk: she is :)

Currently, Oracle driver is in development, DB2 driver is halted for now, since IBM hasn't released a solid .NET driver yet. Further databases which will get support after Oracle are: Firebird/Interbase, Postgresql (both have a driver by Carlos, which works ok) and if I can get it running, MySql 4.x. Because an important part of a schema is the set of foreign keys, it is necessary that MySql supports that. I heared that newer versions do so, so it shouldn't be a problem. However I think that with the planned support of Firebird and Postgresql you won't need MySql :)

# re: Useless programming language constructs

Friday, September 19, 2003 8:50 AM by Jeff Julian
This is a case where you wouldn't use a break after every case if statements 1 and 2 have the same output.

for(int i = 0; i < 10; i++)
{
switch(i)
{
case 1:
case 2:
case 7:
Console.WriteLine("Hello {0}!", i);
break;
}
}
Console.Read();

# re: Useless programming language constructs

Friday, September 19, 2003 8:51 AM by Scott Watermasysk
But you also have to remember that there are more options than just break (as well as the ability to specify multiple cases:

int i = 3;
switch(i)
{
case 1:
Console.WriteLine("ONE");
break;
case 2:
Console.WriteLine("TWO");
break;
case 3:
Console.WriteLine("Three alone");
goto case 4;
case 4:
case 5:
Console.WriteLine("3,4,or 5");
break;

}

# re: Useless programming language constructs

Friday, September 19, 2003 8:59 AM by Frans Bouma
Multiple cases are indeed without 'break' but they share the same code block, I was refering to case statements which do have a separate code block and thus have to have a break statement too

The necessity to specify goto is the sign that the limitation of 'not having fall through' is wrong. If they just remove that limitation, it would be much better: you should specify break when you do not want fall through (and you already do so now) and you don't have to mess with goto crap when you want fall through.

# re: Useless programming language constructs

Friday, September 19, 2003 9:03 AM by Patrick Steele
You're not 100% correct on the second issue (WithEvents in VB.NET). When you said:

"when you leave out the 'WithEvents', you can't define an event-handler."

That's not totally correct. You can define an event-handler, you just can't automatically wire it up with the "handles" statement. Instead, you must use the AddHandler statement.

So your choices are:

private withevents x as Button
and
public sub eventhandler(...) Handles x.Click

-- OR --

private x as Button
AddHandler x.Click, AddressOf eventhandler

# re: Useless programming language constructs

Friday, September 19, 2003 9:06 AM by Frans Bouma
Ah, thanks Patrick :) I should have said 'can't define an event handler with visual studio.net'.

# re: Useless programming language constructs

Friday, September 19, 2003 9:47 AM by Dave Rothgery
I atcually think the ReadOnly/WriteOnly thing for properties is a Good Thing. It lets the compiler tell you "You wrote a property with just a Get or just a Set. Are you really sure you want to do that, or did you just forget?"

# Useless language constructs

Friday, September 19, 2003 2:48 PM by TrackBack
Why things the way they are.

# re: Useless programming language constructs

Friday, September 19, 2003 5:07 PM by Fredrik Tonn
One reason you have to eplixitly specify a break in c# is because _a lot_ subtle coding errors in C and C++ come from the fact that you forget to say "break". This way you have to clearly state your intentions.

# re: Useless programming language constructs

Saturday, September 20, 2003 7:03 AM by Jakub Skopal
The mandatory overrides is IMHO good. Imagine you subclass a class and define new virtual method on it. Vendor of the subclassed class would eventually distribute new version, which has this method defined too. Than the compiler would scream, that you're trying to define new virtual method (virtual keyword) when you maybe want to do override.
This way you know, that you're doing something, that you're maybe not supposed to do (new vs. override keyword)

# re: Useless programming language constructs

Saturday, September 20, 2003 8:06 AM by Frans Bouma
Jakub: it's not the overrides, it's the overLOADS which is bogus. :) Overrides automatically implicitely says there is another method THUS it also overloads.

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Sunday, September 21, 2003 7:53 PM by Dirk Devriendt
I'm impressed; bought the Pro version and got my existing framework working in no time with the generated code (I already used a similar setup, that however cost me a LOT of codewriting). Thanks a lot for a great tool!
MySql is just very widespread as a free database solution for cheap hosting solutions. The ByteFX driver I mentioned very closely follows the standard MS driver signature, so if you can build your catalog and map the datatypes, The runtimelibraries should be rather painless. It 's far superior to other non-GNU drivers, even when it's still in beta (since they're adding a PostgreSQL driver as well)

# re: Serious ASP.NET Editor flaw lives on in VS.NET 2003

Sunday, September 21, 2003 9:57 PM by Marcos Nowosad
This bug was making me very upset and I could not understand why it was still happening, even though I had turned off all auto-formatting options in VS.NET. I just found out that is a well-known bug.

Not only the editor is having this irritating "I-will-do-it-for-you” behavior, but also the final "smart" formatting that is applied is (usually) completely messed up. A child programmer would have done better.

A workaround that I have been using, whenever the editor messes up the HTML code, is to copy and paste the HTML code to an blank XML file, apply the XML auto-formatting (with line breaks) and copy it back to the HTML. The XML auto-formatting feature is much more intelligent and neat than the HTML one and, usually, complies with my HTML indentation style.
I hope the hint helps someone else.

Marcos

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Monday, September 22, 2003 11:57 PM by Bruce Onder
LLBLGen Pro is GREAT! I just bought it and installer it and like Dirk was able to replace my Deklarit framework pretty easily.

Now if I only knew how to pronounce the name so I could sing its praises to the world! :)

--Bruce

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Tuesday, September 23, 2003 3:36 AM by Frans Bouma
Great feedback, Guys! :)

# re: Stop ranting about the blaster worm

Wednesday, September 24, 2003 9:11 AM by Dennis v/d Stelt
>If MS did their job well, this would not have even been an issue in the first place.
>Do it right the first time, or not at all.

If you could start by copy-pasting other people's quotes correctly...
And Frans is talking about those coders, haven't you just read these next few lines as well or are just just plain st*@(*d?

# I don't understand the longhorn-hype

Monday, September 29, 2003 5:29 AM by TrackBack

# re: I don't understand the longhorn-hype

Monday, September 29, 2003 6:37 AM by Fabrice
Agreed!

I guess the reasoning behind this is they consider that the current versions work well enough. And they want to avoid touching it because changes may be break them in unpredictable ways.
Microsoft prefers to start a new beta program with a lot of bug to fix than introduce more bugs in a deployed release.

# re: I don't understand the longhorn-hype

Monday, September 29, 2003 6:55 AM by Daniel O'Connell
Alot of it, I think, is that we just simply get used to the foibles and work around them. I have one major shell complaint: when you have a large number of files in a folder,say 500-3000, not only does the shell load way too slowly(especially if they are pictures), but if you switch from Tile to List, the list view doesn't paint properly and you end up with 2 or 3 files in each column off the screen. The result of this is that I automatically hit refresh after changing the view type, because I know I'm going to have to.

Another large part is, does anyone ever complain about such things? Has it occured to anyone to email microsoft to complain about where the taskbar properties shows up? Until reading this post I hadn't even considered an issue with it, it was simply "there", and I would automatically move my mouse there, To be perfectly honest, changing it now would confuse me more than it would help, I'm far too set into that pattern. I agree it is a little bit of a strange behaviour, but it is cleanly set into my mind now.

Another piece is maybe, just maybe, most people like things the way they are in situation A, or no one can agree on what behaviour situation B should exhibit, so they do something and let it be. In any system you work with, you are going to find things that you don't like, its just a fact of life. It applies to computers, cars, tv's(takes 3 buttons to set the sleep timer, I think it should only be one), microwaves(I have to press a cook button before I can put in the time to cook. why? Its a damn microwave, I obviously usually use it to cook.), and lawnmowers(one pull ignition takes 3-5 pulls). If you move on to Linux, MacOSX, FreeBSD, whatever, I'm sure you will find things you don't like about that system too. And I'd be willing to bet that some of the things you don't like the primary developers will not change because they or a majority do, or because its minor enough that its pretty far down the list. Sure, in some of them you can go down and change it yourself, but if you have time to hack into and recompile your system code everytime you think something should be different, then I'm jealous of the amount of time you have.

Now, I agree that Microsoft does a bad job on fixes. Having to contact product support services to get a QFE to something is really silly in my opinon. Especially since half the time you don't even know a patch exists until someone tells you on the newsgroups. A granular, automated, system wide update tool is needed. By this point it should be beyond easy to be well aware of every patch Microsoft has available for windows, office, or any other microsoft software, which patches you have installed, etc.

The open source community has the luxury of releasing bug fixes every step down the line, of course, they can also release 80 minor versions a year, or even nightly builds. It is simultaenously an advantage and disadvantage. While its easy to keep your products up to date with bug fixes, etc, it is impossible to ever really be caught up or maintain feature equivilence across the board. I imagine it can make support and training a nightmare, because person 1 has 1.1.1, person 2 1.1.2, person 3 1.1.2.1b, and so on, especially if 1.1.2b adds a menu entry or changes wording slightly.

The open source and small companys have that luxury; Microsoft needs to find a way to provide equivilant fixes and feature upgrades to its users. I just don't see how they can realistically do it. With the level of security scrutiny and testing they are expected to provide, how can they? If they were to make a quick fix for something not vital and it changed something distant, something no one expected(and stuff like that happens, you know that, no matter how rarely), it is a very straight forward fact that the media and the users would roast the company for it. If Redhat did it, no one would give a damn. There is politics in this too. It is unfortunate, but sometimes it is us, the users, that make it impossible for Microsoft to provide us with the services we demand.

If you expect perfection, the only thing you will probably ever get is perfect disappointment.

I dearly hope no one really expects Longhorn, or anything else for that matter, to be perfect, it will not be, it cannot be, nothing ever is.

# re: I don't understand the longhorn-hype

Monday, September 29, 2003 7:41 AM by Scott Galloway
I hate to say it (I am not one of those anti everything Microsoft types), but my belief is that this is the result of the dominance Microsoft has in the marketplace. In comparsion to say, the car market where there's lots of competing players around - new cars are released around once a year, if the new model isn't as good as the competition, people simply buy the other model. Both cars essentially offer the same features for around the same price and you could say that they run on the same 'platform' (ok, bad pun...it's a road...). Bugs in cars are extremely costly for the manufacturer both in terms of repair costs and in terms of future sales (would you buy a car who's gas tank explodes? Would you buy another car from the same manufacturer?). Basically if you work in the buisiness world ,you have very limited choice in the software you run, one company in essence controls the roads AND the cars.
Bugs in the products they supply don't really affect future sales - there's no real competition so the spectre of potential lost sales is very minimal - Linux and OpenOffice are not percieved as real alternatives (ask around a normal office - who's even heard of OpenOffice?).
One thing in Microsoft's defence, bugs are in general just annoying (though in terms of Security, they can prove VERY annoying) - they probably won't kill anyone. Also, the products are pretty good (I have WAY more issues with OpenOffice / Star Office than MS Office 2003).
I also don't begin to imagine that Longhorn will be perfect - but I do believe that for the ordinary user it will be WAY ahead of the competition (umm...not counting Macs here...that's a fantastic OS...they just lost the war when it comes to user base)...

# re: I don't understand the longhorn-hype

Monday, September 29, 2003 7:57 AM by Dave
There could be a few other reasons too.

First, fixing any kind of bug increases revenue by... zero? There simply is no finanacial impetus for MS to spend any more time than absolutely necessary on things like bug-fixing. Unfortunate but true.

Second, however much one may argue MS never truely innovates, one thing they have made a name on is working feverishly to stay ahead of the curve. Focus on the future - oddly enough, the antithesis of "Where do you want to go today?" - and pour money and resources into the next product, the next release.

I've questioned time and again recently a concern that this time they may actually get hurt. Literally hundreds of bloggers are posting delerious items about this year's PDC to the point that some are even begging for donations to attend now. In the meanitme MS is not only foregoing an XP service pack for another 3 quarters, they are not working on any new versions of some of their existing products - including IE. There _are_ competitors out there making good products and supporting them. Products that run _today_ on today's PC. In the meantime MS is focusing on a killer OS that won't see the light of day for at least 2 more years and virtually no machine out there right now could even run it!

# re: I don't understand the longhorn-hype

Monday, September 29, 2003 8:50 AM by Frans Bouma
Daniel: good solid piece of writing. Your remark "If you expect perfection, the only thing you will probably ever get is perfect disappointment. " deserves to end up in a lot of signatures :) I agree that perfection can't be achieved easily, however I get the feeling Microsoft isn't even trying: after a release there will be errors and bugs but MS refuses to patch these.

The myth about 'it might break something' is IMHO totally bogus. When a piece of code isn't working as planned, you should make it work as planned. That doesn't have to require interface (code) changes, just reimplementations of current code.

Scott: I agree, however I think Linux will be an alternative for a lot of people within a year. KDE and Gnome are really on track to become solid platforms.

Dave: Exactly. I think it is revenue driven not to patch a lot or better: to spend a lot of resources on customer support. On the other hand, they have enough revenue to get customer support on a higher level and still make money.

# re: I don't understand the longhorn-hype

Monday, September 29, 2003 10:24 AM by Ray Jezek
My shell restarts very infrequently and when it does i always assumed this was because of a 3rd party app hanging the system. I would rather have restart called and have the OS pull out of the nose-dive as opposed to having to give a 3 finger salute and start all over possibly losing work. I never attributed the restart to a known bug in the shell that they refused to fix (maybe im wrong?). As for the other issue of the properties dialog, I cannot reproduce this on my system nor have i ever seen it on anyone elses (even on dual monitor setups). That issue not withstanding, I havent obeserved many other bugs of this nature either.

But besides the fact that i dont agree with the specific issues you raise, the overall sentiment i can agree with.. especially the one about competition. I hope OSS gains more momentum and puts more pressure on MS to start delivering better products at more competitive prices.

# re: I don't understand the longhorn-hype

Monday, September 29, 2003 12:40 PM by Frank Showalter
I agree with your sentiments regarding the lack of bug-fixes.

But regarding your post title "I don't understand the longhorn-hype":

I think you understand the hype very well - people are excited about a new OS, and XP is old news.

# re: I don't understand the longhorn-hype

Monday, September 29, 2003 12:50 PM by Frans Bouma
"I think you understand the hype very well - people are excited about a new OS, and XP is old news."
Well, I understand that the hype is there and what's causing it, and at the same time do not understand why the hype is there, because XP might look old news, it will still be the reality for the next 2 years to come, without a big improvement in sight (perhaps a new moviemaker, oh the joy). People should realize that hyping the next-generation OS is not what we need, we need focus on today's problems with solutions available today, not tomorrow nor next year but today.

# re: I don't understand the longhorn-hype

Monday, September 29, 2003 1:23 PM by Paul Laudeman
Amen! I agree 100% with you Frans. This is something I've blogged about before, too:

http://dotnetjunkies.com/weblog/plaudeman/posts/1811.aspx

http://dotnetjunkies.com/weblog/plaudeman/posts/1540.aspx

http://dotnetjunkies.com/weblog/plaudeman/posts/1111.aspx

Keep it coming! The more voices that speak out together give us a greater chance that we'll be heard!

# Frans doesn't understand the Longhorn hype

Monday, September 29, 2003 2:09 PM by TrackBack

# re: I don't understand the longhorn-hype

Monday, September 29, 2003 4:56 PM by Daniel O'Connell
Another thing, after sleeping on it, one of the things I'm looking foward to in longhorn is the hope that some of the major platform issues that cause programs to break (COM plugins, etc) may be resolved as .NET style designs are used....that may still be a dream however

# re: I don't understand the longhorn-hype

Monday, September 29, 2003 6:47 PM by Derek Stone
Let's face it: it was hype that got people to purchase Windows XP in the first place. Windows 2000 had been out for a good 2 years when it was released. The smart consumer would have purchased Windows 2000 back in '99, skipped the incremental Windows XP release and had a solid and financially smart 6 years between OS upgrades. That is unless of course you managed to justify spending $100-$200 on a brand new skin and a new login screen with pictures. People need to start making smarter choices as consumers. You don't complain to car companies when the release a new model each and every year, do you? No, you just don't buy it. Period.

# re: I don't understand the longhorn-hype

Monday, September 29, 2003 10:51 PM by Darren Pruitt
"You don't complain to car companies when the release a new model each and every year, do you? No, you just don't buy it. Period."

True, but if said car company refused to maintain their products that were over eight years old, I would complain. And, look for another car company.

I beleive that Microsoft has some really innovative products, but that their biggest product, Office, is peaked and invation saturated. How much more can you change a word processor? How many more features can you add? I agree with Fran, if you want to keep the client, fix the bugs.

I see in corporate offices the decision makers are asking why they need to spend more money on technology. How can the CIO justifiy spending more money on a tool they just bought two years ago and probably haven't even fully amortized yet. A goat takes five years to amortize, why should a word processor be any less?

If your not part of or contributing to the bottom line, you are overhead. Overhead is dispensable.

# re: I don't understand the longhorn-hype

Tuesday, September 30, 2003 7:30 AM by Dave
Now Darren, I believe I must disagree. A year ago I'd stand alongside your comment about Office and new features and changing word processors. But have you checked out those exact things in Office 2003? InfoPath and native XML come to mind immediately.

Granted, at this moment those two things are completely meaningless to 'consumers', but given a year or two of developers creating their part and, well, I find Office 2003 to be the first version with significant improvements since Office 97.

Oddly enough, MS in many ways did get it right with Office 2003. First off, the new features I just mentioned are very good reason to purchase it - reasons that didn't exist for Office 98 through XP. I realize this also means MS gets the increased revenue too, but then again... during the development/beta cycles for 2003 they also released a slew of SRs too. Something they don't seem to be doing for Windows XP.

# re: I don't understand the longhorn-hype

Tuesday, September 30, 2003 9:09 AM by Darren Pruitt
1995
====
Bob: Boss! There's a great new Office product to go with that new OS!

Boss: Great! Email!?! This will help productivity! Get it for every one!

1997
====
Bob: Boss, there's a new Office product out, it fixes a lot of bugs!

Boss: Great! Bugs are bad! You computer guys sure are helping out the company!

2000
====
Bob: Boss, there's a new Office product out, it is Y2K compliant.

Boss: Well, this is getting a bit expensive but corporate did just make it the standard. Make sure everyone gets a new Anti-virus too, someone out doesn't Love Me.

2002
====
Bob: Boss, there's a new Office product!

Boss: No.

Bob: It has increased security!

Boss: No.

Bob: It looks cool!

Boss: No.

Bob: There's someone fromt eh BSA at the front desk.

Boss: What! Ok, we can upgrade, but we have to lay off half the IT staff. We can outsource the help desk.

2003
====
Bob: Boss! There's a new Office product!

When will it end?

# re: I don't understand the longhorn-hype

Tuesday, September 30, 2003 9:26 AM by Frans Bouma
Dave: XML functionality is part of open office since a long time. It's nothing new. Besides that, the point is: when I start word, I want to type some texts, save it, print it whatever, but I want the tool to HELP me with the processing of the words. Now, with Word XP I still have errors in headers, bullet lists, table crap etc. No offence, but Word XP is the 2002 version, why are these simple bugs still bugging me in the year 2002, in version 11 (!) of a wordprocessor ? And! why aren't these fixed but is a NEW version released for 400$ which seems to fix these bugs (I hope)? The functionality I want/need is already in word 2000, even in word 98. I just want it to work OK, without bugs. So instead of bringing out new releases for money which have new features, it would be great if the current version is bug free. Now, when that happens, no-one will upgrade, true, but when MS is following this path of 'Flaws == revenue', more and more people will understand that f.e. Open Office is as good as MS office, if not better and costs less (0$).

For MS, they have to realize that they're at the end of the line for office: there will be less reasons to buy new versions, because people get annoyed or alternatives are as good and cost less.

For me, I'll never go back to MS Office again, because the alternatives are IMHO of better quality and cost nothing. I'm willing to pay for quality, don't get me wrong, but I also judge on quality: if the tool is not worth the money, I won't buy it. MS office is IMHO a huge pile of badly maintained software, with a lot of weirdness that is not addressed in whatever version you purchase. (Word never had a good table editor, and it will surprise me if the 2003 table editor is of the quality of open office).

So, MS should focus more on quality to KEEP existing customers: make the customer feel that they are appreciated, serve these customers with frequent updates so the customer is helped. This will cost revenue, but if they are not doing this, they will lose customers to competitors who have a better product and it takes a huge pile of effort and money to get customers back.

# re: I don't understand the longhorn-hype

Tuesday, September 30, 2003 11:04 AM by ethan estes
Derek-the difference with car companies is that they can be forced to recall vehicles to fix problems that are wide spread-at no cost to customer. They also have the warrenty itself to cover the vehicle. There are guidlines for safety set forth by the government that they must adhere to. Would you except it if your model's A/C system failed and the dealership said wait for the '04 model it should be fixed in those-for 16,000 dollars? Microsoft has no accountability-that's the problem. Mercedes-benz had a slew of issues in the last few years with the managment of all the new electronic systems and they were forced to buy back all the e-class models that were having issues. Oes microsoft buy back copies of office-no.

# re: I don't understand the longhorn-hype

Tuesday, September 30, 2003 4:55 PM by Dave
Frans, sure XML functionality has been part of 'open office' or even MS Office (in case you meant StarOffice or whatever). But _native_ XML storage of Excel spreadsheets? XSL formatting? You might as well say do your webpage development in Word and use the utterly useless "Save as HTML" feature for comparison.

I never meant to say that Office was bug-free, onl.y to say that MS never stopped publishing coherent bugfixes while developing a new version. Which is something that they are with Longhorn.

Derrick, please note I did not say Office 2003 offered _immediate_ paybacks to the 'consumer'. Only that the development features I mentioned will in time be used by the consumers in ways that will IMHO make it considered the next 'true' version since Office 97, when Outlook became an official part of the product.

# re: I don't understand the longhorn-hype

Wednesday, October 01, 2003 4:17 AM by Daniel O'Connell
I have to say the XML features of Office 2003 are of great value to me. Even if open office can handle xml, not a single one of my customers uses open office. Not to mention I don't really want to maintain two code bases to handle MS Word and OO Writer interop\document generation(assuming feature parity...I imagine most of the features exist in both), same goes for Excel, etc.
At one time, during a budget crunch, I suggested using OpenOffice to a local small company to save money. The owner asked me three questions which pretty much killed the subject: 1) How much would it cost to re-write everything to work with the new suite(they use 3 apps that interact with word and\or excel) and several smart tags, 2) how likely is it that they could find, say, a new secretary that was trained and able to use it immediatly, 3) how much was it going to cost to switch back if people lost interest in OpenOffice and stopped working on it.
After sitting down and thinking about it, buying office for the new pc's was _MUCH_ cheaper. Add onto that I was never able to verify if OpenOffice could handle smart tags, which they wanted(really cuts back on the work, as they interface with the customer, employee, etc database), and the decision for OpenOffice died on the floor, MS office was just cheaper and more productive.

Point is, $0 price tag doesn't always make things cheaper.

# re: I don't understand the longhorn-hype

Thursday, October 02, 2003 12:07 PM by Abdu
- If you look at the reliability of Windows starting from 3.1 to 2003, the OS has been improved alot and with many new productivity features. MS could have improved 3.1 for 13 years and give us a rock solid Windows 3.1 but MS is in the business of making money and companies would have moved to Novell, Unix or Mac if Windows 3.1 stayed with its current features. MS needs to fix its security and the updates feature. I read just today that MS admits that its security update strategy is flawed and will patch it using a new method.

I like MS products and they have increased my productivity as a user and as a developer many times. My only gripe is that every new version demands more computer resources. However I don't mind upgrading my computer every 2 years. Need to do this anyhow for games too :)

If there's anything you don't like about an MS product, you need to let them know. If enough people complain, they will notice and hopefully do something. It doesn't them any good if you complain quitely.

Every product I use has annoyances and you learn to live with them or use something else. For example, my inlaws' Blazer's cupholder is the most idiotic one. It doesn't have enough depth to hold a tall cup and has no grip. I have to take easy turns to avoid spilling the cup. Can I call this a design bug?
My alarm clock off button is in an obscure place. I have to be 60% awake to find it and turn it off. Time to buy a new one. .. and so many other annoyances.

Abdu

# Can ASPNET read the registry or not?

Thursday, October 02, 2003 3:34 PM by TrackBack

# re: Why Edit & Continue is a bad thing

Sunday, October 05, 2003 1:12 PM by Dr_Barnowl
As a VB6 programmer by trade, I prefer C# as a language ; Whenever I try VB.NET, I start to unconsciously use VB6 syntax. And since I'm still working on active bodies of VB6 code all the time, I don't really need VB.NET syntax cluttering up my head and taking over.

But I really miss Edit & Continue when I write C# code ; particularly because I'm still learning C# and the .NET class libraries. While a lot of things will be caught by the compilers, and I agree that test-driven development is the way forward, E&C really helps you learn.

I came to software development with zero professional experience from the medical profession : I was pretty much thrown staight in at the deep end and had to learn VB6 in a matter of weeks (on the redoubtable foundation of BBC and Spectrum BASICs). E&C was a great help ; when you've put a couple of parameters round the wrong way because of inexperience, it's a great boon to be able to shift the run pointer back a line and swap them round.

The other thing I miss with .NET is the ability to execute code in the immediate window without being in break mode ; the VB6 immediate window has many uses, from looking up character codes without having to trudge through the help, performing large calculations that you don't trust the default calculator with, etc.

Convenience features don't make you less of a "man". And you don't always have the luxury of well-structured code with decent testing frameworks ; very often, you're working with code that others wrote, and of questionable quality. My time maintaining our huge, ancient VB3 app has made me very, very glad of E&C.

# re: I don't understand the longhorn-hype

Monday, October 06, 2003 8:20 PM by Me
Explorer loads lots of 3.party DLLs in its process space. In fact it can host IE, Thumbnailviewers (e.g. thumbnails of .eml-files) and lots of extensions to the menus of files.

I wonder whether such a thing can ever be stable!

But you can just replace the explorer.exe-shell with cmd.exe or Cygwin Bash if you want. Or progman.exe (in XP). Just do it!

# re: Eric Sink's crabbyness

Saturday, October 11, 2003 8:21 AM by Christophe Lauer
Yep, this post is really funny and worth reading ;-)

# re: Eric Sink's crabbyness

Saturday, October 11, 2003 8:56 AM by SBC
Not only is a good writer but he has a terrific sense of humor as well - http://notalegend.com/notalegend.html

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Tuesday, October 14, 2003 11:38 AM by Abdu
I hope you're working on the examples. It has been over a month since my request and I've heard nothing.

Abdu

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Tuesday, October 14, 2003 12:01 PM by Frans Bouma
Abdu, erm...
http://www.llblgen.com/pages/demo.aspx

the current example (VB.NET or C#). It's released on the 19th, updated on the 30th.

The blog is also updated with this. :)

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Wednesday, October 15, 2003 3:50 PM by Abdu
Ok thanks. I wasn't aware of the update.

Abdu

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Wednesday, October 15, 2003 3:54 PM by Frans Bouma
No problem :)

# re: Oracle 9i is already generations ahead and shows a .NET flaw.

Monday, October 20, 2003 7:17 AM by Paul Gielens
Interesting read. I never thought about .NET from this point of view.

Although you are probably right about .NET the lack of support for vendors other then MS, but I would think it’s fair to say “WE” could fill in the gaps ourselves with a strong open-source initiative.

# re: Oracle 9i is already generations ahead and shows a .NET flaw.

Monday, October 20, 2003 7:18 AM by Jeroen
Is Scott McNealy blackmailing you? :)

But seriously, I agree with most of your points, although I think stuff like MVCC and synonyms will probably reach Yukon.

I'm not sure about the rest though. Also, I must admit I've never used UDTs, but I agree that for large-scale db applications, they're probably extremely important. Also, they tie in well with the whole schema approach, that basically encourages (or rather forces, but in a good way :)) to just make a single environment housing all your data and then creating schemas for individual applications. If you use UDTs there it can save you a lot of time if you create those custom types with generalized functionality in mind for all the different applications that might have a table in their schema containing one of those UDTs. In SQLServer people often don't bother because they'll have another database for "that other" application anyway. Which in turn encourages long-term chaos.

# re: Oracle 9i is already generations ahead and shows a .NET flaw.

Monday, October 20, 2003 7:31 AM by Frans Bouma
Jeroen: Larry didn't need to, he just gave away a free version of Oracle 9i for developers to download :)

You are very correct about the UDTs and the chaos and the simplicity of maintenance. It really worries me why I haven't read anything about them in the Yukon hype that is available.

Paul: The limitation is in the DataColumn type in .NET, it doesn't support custom types. That pretty much kills UDT support, unless you are using an O/R mapper with custom classes. At the moment these tools are left in the cold by both Oracle and MS because both their providers are not supporting UDTs. (Don't know about the commercial providers though, but these are extremely expensive). Nevertheless, to unleach the true power of DB2 and Oracle in an OO fashion, you have to write code in Java inside the database and call that code from .NET. You then have to be a very very pro-.NET person to pick .NET for the logic outside the database. I'd then opt for Java / J2EE also.

# re: Oracle 9i is already generations ahead and shows a .NET flaw.

Monday, October 20, 2003 8:19 AM by Andrew
Nice review, i've some thoughts also...
1) UDT is not connected directly to Java but usable in it- through very similar to strongly
typed dataset realization but support in-
DB generation of "beans"="row mappings".

2) "native" UDT language is "PL/SQL"(4GL) language written on c++, not Java
(Java VM is optional component of DB and
most DB gurus use "PL/SQL" packages/procedures
architecture in real work).

3) True power of relational data is flexibility
in operations but when you try to "enforce" some kind of "schema" on it- you lose that.
I mean, did you try to use this "wonderful"
UDT functionality in big project?
I think not, because you'll see that it's
really hard to change UDT/object schema-
require mass recompilation,code adjustment
procedures.Can you garantee that you data
schema(structure/content relationships) will always be the same?Don't think so...
But if you can't you're in big trouble.
What if you want to add/drop/rename column
(field in OO world)of physical table-type definition get out of sync straight away.

Now we're using UDT in "object" views
(more concrete- XML xsd based views) for
structured layer on relational data but we're
always tring to adapt OO features in our projects on "physical"=table layer-
without luck so far...OO layer is not flexible enough.From relational data I can assembly
any object from object I can ...???
By the way XML data is more flexible by nature
than object graph and oracle support structured "xmltype"(xsd based)
in "native" mode but it's also useful only in
"view" mode for now(for complicated cases-
save/read not count ;-) because after selection from "xml" table
you lost any type information associated with
table's column and column data becomes opaque
"xmltype".
Maybe XQuery/XPath2 can help in some way ;-)
but for now...

Best wishes.
P.S.
Look at
(http://www.oracle.com/forums/forum.jsp?forum=34) XML DB forum you can find it interesting.

# re: Oracle 9i is already generations ahead and shows a .NET flaw.

Monday, October 20, 2003 8:25 AM by Thomas Tomiczek
::Schema driven

I disagree on this one.

I mean, you get another product from someone. Having this product's stuff in a separate database is a great way to separate different "modules" (like complete applications systems) from each other.

What do you do if by chance you need to install two applications having a table with the same name? The message board on your website has a Table named "User", as well as the content management system?

These are two different systems. How does oracle handle this? I think I prefare the "separate database" way of thinking.

# re: Oracle 9i is already generations ahead and shows a .NET flaw.

Monday, October 20, 2003 8:28 AM by Andrew
But anyway xml functions is very powerful
feature
(http://download-west.oracle.com/docs/cd/B10501_01/appdev.920/a96620/toc.htm),look at "Generate XML Data from Database" chapter xmlelement/xmlagg/xmlsequence -all is
xml costruction functions from flat relational
data.

# re: Oracle 9i is already generations ahead and shows a .NET flaw.

Monday, October 20, 2003 9:22 AM by John Cavnar-Johnson
Interesting that you claim to be a database purist and yet you like sequences and MVCC. I like those too, but they seem to be "impure" from the relational theory point of view. As to the other three features, I feel that those are misfeatures. They introduce a great deal of complexity into the design of the database without much in the way of compensating benefits. I suspect they belong to the class of features in Oracle that I like to call the "Oracle DBA Full Employment Protection Act". They exist primarily to protect the jobs of high-wage DBAs.

# re: Oracle 9i is already generations ahead and shows a .NET flaw.

Monday, October 20, 2003 9:35 AM by Frans Bouma
"Interesting that you claim to be a database purist and yet you like sequences and MVCC. I like those too, but they seem to be "impure" from the relational theory point of view"
Based on what are these impure? Sequences are a way to use synthetic keys without having to add information to the model, as I described: they allow you to set field values without having to rely on DDL specifications, which doesn't seem to be impure to me at all. The same goes vor MVCC: as long as a transaction is not committed, the actions taken by the transaction should not affect other users in the system. This is exactly what MVCC realizes. Without MVCC, users will be blocked by an ongoing transaction even when that transaction can roll back. Enabling dirty reads to circumvent this will allow dirty data to end up in the other data, which can cause data inconsistency. MVCC therefore is very helpful in a relational model, and I definitely don't see why MVCC is impure at all, on the contrary.

Your other claim about 'complexity' is just that, a claim. Can you elaborate it a bit? Just claiming it adds complexity without benefits is not that useful. Synonyms for example reduce complexity for a great deal. UDTs do to, because you don't need to write check constraints or triggers anymore, two elements which are stored 'deep inside' a schema most of the time and are easily forgotten (especially on sqlserver)

# re: Oracle 9i is already generations ahead and shows a .NET flaw.

Monday, October 20, 2003 9:38 AM by Frans Bouma
"because you don't need to write check constraints or triggers anymore"
I meant, triggers to check values set for fields. There are other areas where triggers can be helpful and these are of course not solved by UDTs

# re: Oracle 9i is already generations ahead and shows a .NET flaw.

Monday, October 20, 2003 9:46 AM by Frans Bouma
Thomas: you can start different oracle instances if you really want to separate the schemas. However when you look at oracle as a set of schemas it's really not different from a set of 'databases' where you have just one schema per database: the dbo one: after all, you just 'see' what you are allowed to see, so if there are hundreds of other schemas with tables, you can't see them nor use them.

Andrew: No I haven't used UDTs in a large project and your concern about recompilation/modifications of schemas is similar to the disadvantages of stored procedures, however I still think when you design your UDTs with care, they can be a great benefit and will not be of such a disadvantage as it might seem. Nevertheless: the feature is there, but .NET can't use it. This is important: you can't use a table with a column of a UDT type in .NET, nor can you bind a REF CURSOR to a dataset when that REF CURSOR returns rows with UDT values. This can severily limit the usage of .NET on Oracle.

# re: Oracle 9i is already generations ahead and shows a .NET flaw.

Monday, October 20, 2003 10:04 AM by Silvano Coriani
Frans,
i've worked with both products for years, and even if your statements about SQL Server are correct, i don't consider these strategic in a real sense, but they're so important that MS will implement everything (but sequence) in SQL Server Yukon.
Honestly speaking, i think that Oracle has 2 real main advantages over SQL Server: it's multiplatform and it's less dependant from the O.S. for functionalities like I/O, for example. This let Oracle designers implement stuff like "per User" or "per Group" resource management.
SQL Server has a main drawback, and it's related to Windows I/O subsystem and operations priority.
But technically speaking, SQL Server's Query Processor and Optimizer are more advanced than Oracle's one, and the ease in management and operations is not a point of discussion between the two products.
Usually, i'm not a "taliban" comparing this two different approaches, and i recognize that they're leaders in this market, but please, use more important points to judge who's better.

# re: Oracle 9i is already generations ahead and shows a .NET flaw.

Monday, October 20, 2003 10:15 AM by Frans Bouma
Silvano: I used these points because they are important for developers. SqlServer's fiber option (it's an NT kernel option really) plus the careful placement of datafiles and logfiles on separate disks on separate controllers can eliminate a big chunk of the I/O bottleneck. Per 'user' resources can be implemented in SqlServer too, when you look at users in Oracle as 'databases' in SqlServer: in SqlServer too you can manage where which filegroups are stored, but of course not how many memory / cache that database is allowed to use.

The multi-platform feature of Oracle is perhaps important to some people, I don't think that it is an important feature to have, mostly because Oracle and also SqlServer are used as standalone servers in a lot of situations (especially Oracle), which eliminates the importance of a platform.

And seriously: what will come with Yukon is fine, but it is at least 1 year away. Today, I can only opt for SqlServer, which is still the database I know best and use most, but it is aged. The features I listed are important to me as a developer and are not available in .NET nor SqlServer for at least a year. I think people should be aware of what is available today instead of looking at f.e. Yukon and 'what will be'.

# re: Oracle 9i is already generations ahead and shows a .NET flaw.

Monday, October 20, 2003 11:03 AM by Jeff Gonzalez
http://www.tpc.org/tpcc/results/tpcc_perf_results.asp?resulttype=all&version=5

Microsoft has 5 of the top 10 in just performance. Oracle has 3.


http://www.tpc.org/tpcc/results/tpcc_price_perf_results.asp
If you go by price and performance...
Microsoft has the top 10 in all results


I guess personally, I do not view putting application or business logic inside the data layer as a cool feature. To me it seems like lazy programming. N Tier or SOA is more flexible imho. Putting application logic inside the application allows you to change business functionality without reworking stuff in the data layer. It also has a lower TCO. Developers typically make less than DBAs (warning: generalization). 2-3 developers might cost what 1 DBA would run. One of the points people have made is that Oracle is cross platform. And Sql Server being tied to the underlying OS functionality such as I/O and operations priority. Well guess what, you put Oracle on Windows, it is subject to the exact same things.

My 2 cents.

# re: Oracle 9i is already generations ahead and shows a .NET flaw.

Monday, October 20, 2003 11:10 AM by Jason
Having rolled out a complete .Net solution using Oracle's .Net Provider, I have to say when it comes to .Net development use SQLServer. At this point neither provider (Oracle/MS) offers the full breath of features even Ora8i has. Now I've recently come across a new provider from CoreLabs that looks promising. hit it up here http://crlab.com/oranet/. There is a demo version availible. I'm very interested in putting there OraclePackage through it's paces along with the promise of all Oracle 9i datatypes. I wished they had on-line docs that I could look through to get a feeling of what some of there examples are like.

# re: Oracle 9i is already generations ahead and shows a .NET flaw.

Monday, October 20, 2003 1:20 PM by Andres Aguiar
IMHO, the most important difference between SQL Server and Oracle is its clustering support.

In SQL, if you want to cluster, you need to partition your database, and perhaps change your application logic. Each cluster is a different database server. In Oracle, you can have any number of database servers accessing the same data. This implies that you can scale out the database very easily, so running business logic in the database is a good option. SQL developers are always looking for ways to remove processing from the database because is the single point of lack of scalability. Oracle developers don't need to be that worried about that.

BTW, Yukon supports UDTs.

# re: Oracle 9i is already generations ahead and shows a .NET flaw.

Monday, October 20, 2003 1:35 PM by Brad More
Hmmm, how about using the best of both worlds? I work for a firm that up until very recently was exclusively Oracle. We have found the mix of using Oracle for data services and logic (business rules, etc.) mixed with .Net for presentation to be, in a couple of wors, brutally powerful.

# re: Oracle 9i is already generations ahead and shows a .NET flaw.

Monday, October 20, 2003 3:09 PM by Bob Yexley
SQL Server "database" = Oracle "tablespace". This would be a more effective segregation of data over creating a separate Oracel instance, as a completely separate instance would double the resource load on the machine. Creating an additional tablespace for new objects would essentially achieve the same end without the additional overhead.

# re: Oracle 9i is already generations ahead and shows a .NET flaw.

Monday, October 20, 2003 4:06 PM by Yves Reynhout
Personally, I think xml support (in all its facets) is much more important than any other technology (regardless who provides it).

But back to the topic at hand ...
UDTs provide a powerfull means to abstract away the traditional relational thinking (views, tables, columns, ...). However if I have portability (think "with a minimum amount of effort/changes") at the top of my priority list, I won't use it. But if it's not, don't overshoot architecture and go for it!
On the subject of synonyms: You're right, but a well designed data-accesslayer/O-R mapper will get you just as far. Ofcourse, the real benefit comes from using these synonyms in the database itself (so there's two ways of looking at this).

From another perspective: What did you expect? That MS would build a fully functional provider targetting all features of the latest Oracle DB. You seem to forget that MS has a database server of their own, and I don't think the data access team is gonna bite the hand that feeds them. If Oracle would consider .NET to be a serious platform, they would write their own fully fledged provider (and they have, it's called ODP.NET[http://otn.oracle.com/sample_code/tech/windows/odpnet/index.html], but I don't know about the feature-set). If anybody should bring all these features to the .NET masses, it should be Oracle.

Should all these features be implemented in MS their database product? MS has a tendency to listen to developers and customers, so it's up to us to make sure they (the features) make it into MS SQL Server!

# re: Oracle 9i is already generations ahead and shows a .NET flaw.

Monday, October 20, 2003 4:35 PM by Kingsley Idehen
Oracle 9i is certainly ahead of SQL 2000, and Oracle 10g broadens the gap even further. But as far as Runtime Hosting goes Oracle is Java Only while Yukon will ultimately be .NET only. OpenLink Virtuoso (a virtual database engine for SQL, XML, and Web Services) addressed many of the current and future features of Oracle, SQL Server, and DB2 in a single compact and cross platform package today (v3.0, and more so re. new Oracle XML functionality in the v3.2 release ETA this week). My blog (see url above) and this WIP Blog (http://www.openlinksw.com/weblogs/virtuoso) are all built using Virtuoso (leveraging SQL, XML, and Web Services), and they contain references to a plethora of live tutorials and demos (available as RSS, OPML feeds naturally).

# Funny thing ...

Monday, October 20, 2003 5:47 PM by Jorge Chandra
... you can have all of those features (except the "Synonyms") with <a href="http://www.postgresql.org/">PostgreSQL</a> for free.
Go and try it.
You can install it in windows via Cygwin , it is somewhat painfull to install, but if you follow the instructions in /$CYGWIN_HOME/usr/doc/Cygwin/postgresql-$VERSION.README you should be OK, see the "install as service" instructions (there are plans to make a native windows version, but it didn't happen yet).
There is work underway to make a <a href="http://gborg.postgresql.org/project/npgsql/projdisplay.php">.Net Data Provider </a>.

<a href="http://pgadmin.postgresql.org/pgadmin2/pgadmin2.php">PgAdmin</a> is a very decent management tool, I advise to use the 1.6 version, the latest multiplatform version has some warts.
You can easily migrate an existent SQL Server Database to PostgreSQL using the Database Migration Plugin.
Have fun :-)
Regards,
Jorge.

# re: Oracle 9i is already generations ahead and shows a .NET flaw.

Tuesday, October 21, 2003 3:06 AM by Peter M
As an Oracle specialist, I agree with most of the things you say, except for the documentation. I do not agree when you say that the documentation is not important, and when you say it is poor. I think that Oracle's documentation is an industry standard, given the complexity and the dynamics of the software it describes. Have you been through the "Concept Guides"? Too easy for you? It is a introduction class to database that very few books match. Most of the reference guides give you the detailed information you need to do your job. Most of the doc is available in html and PDF for priting. Of course, like in all software of that size, there are "doc bugs" but there are so many help resources out there...

# re: Oracle 9i is already generations ahead and shows a .NET flaw.

Tuesday, October 21, 2003 5:18 PM by Duncan Godwin
Hi,

It looks like Yukon will support UDT's, take a look:

http://blogs.gotdotnet.com/tims/commentview.aspx/d98b62ed-686b-485b-b82b-b9f2f32b3bf1

# re: On Microsoft's new Security Bulletin release scheduling

Wednesday, October 22, 2003 6:57 AM by Stefan Holdermans
Well, the suggestion of doing both, making individual patches available immediately and releasing monthly packages, is, in my humble opinion, not the path to take.

Figure: when an individual patch is announced a lot of people may find inspiration and go and find out which system administrators have installed the patch and which haven't. System administrators that don't immediately install the patch are quite vulnerable then.

By releasing monthly security packages one suggests that not taking action immediately is a reasonable option, which obviously it isn't.

Therefore, a combination of immediate and once-per-month release strategies is not better than any of two alternatives.

# re: On Microsoft's new Security Bulletin release scheduling

Wednesday, October 22, 2003 6:57 AM by senkwe chanda
Actually, they said that if a flaw is particularly severe or there is a possible exploit available, then they'll release this info outside of the schedule. So I don't expect remotely exploitable bugs to remain unattended for a whole month.

Seems reasonable to me :-)

# re: On Microsoft's new Security Bulletin release scheduling

Wednesday, October 22, 2003 7:02 AM by Frans Bouma
Stefan: you assume that when a security fix is released, the world doesn't know that there is a flaw. However this is not true in a lot of cases, see the securityfocus.com forums.

I saw MS will release a patch immediately when an exploit is in the open. How often do they check for this exploit? 24/7? It doesn't say, plus even if they do, they can't be sure the exploit isn't there.

I think the only real option is to keep it as it is: release the patch when it is done, thus allowing people who want to patch immediately, to patch immediately.

# re: On Microsoft's new Security Bulletin release scheduling

Wednesday, October 22, 2003 12:18 PM by Robert McLaws
Microsoft did research and discovered that these vulnerabilities were almost never exploited before the patch was released. People were reverse-engineering the patches to determine the flaws and THEN exploiting them. Also, once a week patches were very hard on guys like me who deal very heavily with security (www.patchdayreview.com). Besides, a lot of IT people were screaming bloody murder that they had to patch every week, granted, patches weren't released EVERY week, but people are not making use of SUS like they should. Critical patches are still released as meeded.

Besides, weren't you just complaining a couple of months ago that you didn't like Microsoft's patching techniques? At least they are trying something different.

# re: On Microsoft's new Security Bulletin release scheduling

Wednesday, October 22, 2003 12:31 PM by Frans Bouma
Robert, I complained some time ago that they didn't release patches when they were available. Now they do something different, but IN THAT DIRECTION.

Frankly, I don't care if a sysadmin is angry when he has to patch systems, its his job. I was not happy with all the patches in a continuous stream but not because they were released frequently, but because there were leaks in the first place, AFTER all those code seminars MS held with the developers and the code-reviews.

I as a customer am now handed over to Microsoft's decision if the flaw is critical enough to release a patch immediately. I don't think that's MS decision to make, since the systems I have to keep up running (we're small, so no sysadmin here) are not their responsibility but mine.

# re: On Microsoft's new Security Bulletin release scheduling

Thursday, October 23, 2003 12:54 PM by Abdu
The patch headache is related to how many servers you're administering. If you have only a few, applying the patches is not a big deal. For companies with 100's or 1000's of servers, it's a nightmare.

Microsoft does release many patches but they are for different applications. Some are for IE, some are for Outlook, some for Exchange, some for the OS and there's an importance level for each patch. I personally only apply critical patches for systems that are connected to the net, otherwise I don't bother. The likehood that a patch breaks something is higher than fxing a non important issue. If it aint broke, don't fix it. I mean if you're not experiencing the problem it's fixing, don't bother.

Abdu

# re: Useless programming language constructs

Friday, October 24, 2003 8:14 PM by Robin Debreuil
The break is necessary because many people would be expecting the fall through. To ignore past languages is to ignore present assumptions. Also it has been a rich area for bugs that is solved by being more explicit. The goto's are more explicit as well, explicit enough that you can insert/reorder things without breaking your code. Logic based on order of appearance is pretty fragile imo.

So I'm happy with the break, the lack of fall throughs, and the resulting compiler errors you get when you don't specifically say what you want...

# re: Short list of non-obvious things determined from the C# 2.0 draft

Saturday, October 25, 2003 9:30 AM by Paul Wilson
Partial types are part of VB.NET also, so don't worry about that one.

# re: Short list of non-obvious things determined from the C# 2.0 draft

Saturday, October 25, 2003 2:04 PM by Roland Weigelt
What I didn't find (but hoped for) are different access levels for properties.

I.e. A public property set, but protected property get.

Or didn't I search to spec hard enough?

I sent a mail to "Ask a language designer" about this today... let's see what the response is.

Roland

# re: Short list of non-obvious things determined from the C# 2.0 draft

Saturday, October 25, 2003 5:08 PM by Daniel O'Connell
In regard to properties:
"Properties, events, indexers, and operators may not themselves have type parameters (although they can occur in generic classes, and use the type parameters from an enclosing class)."

By my reading, that means that:

public class Generic<T>
{
T Property{get{...}}
}
is correct while

public class Generic
{
T Property<T>{get{...}}
}
is not. Its not really a surprise considering that collection types would be specified in the class and that there is no mention of paramaterized properties(which really aren't needed, IMHO).

Another thing I like is Method group conversions(page 14, section 19.21.1) which basically allows the compiler to infer delegate types instead of requring the new DelegateName() syntax. So code like
btn1.Click += btn1_Click;
works instead of requireing
btn1.Click += new EventHandler(btn1_Click);
for example. It is simply easier and I suspect will be easier for new users and non-IDE users(as it stands, I just hit tab twice to build an event handler, so its not going to save me much typing).

I am also pleased that iterators aren't strictly restricted to GetEnumerator\foreach keyword like was mentioned early on, but can be defined as any method that returns IEnumerable\IEnumerator(or the generic counterparts), allowing for more creative uses of the feature.

One last gotcha, although its pretty obvious, the spec mentions that using aliases in partial types only apply to the scope they are defined in, meaning that in ClassPt1.cs and ClassPt2.cs the same type alias could refer to different types. Its not a feature so much as a potential problem if not carefully used(I don't like aliases anyway, hopefully this won't cause any extended confusion).

Beyond that, I wonder if this is a complete draft of what they are adding, or if it is simply a teaser spec for the 4 big features we are all expecting, while leaving out maybe some smaller things, like seperate property access levels(which no one knows if it will be there or not, form what I've read, the camp is pretty divided in MS). I wouldn't be surprised if there are other smaller enhancements that won't be announced until the PDC, or maybe not even noticed until someone reads the final spec, but I could also be wrong.

My favorite oversight so far, however, is the spec doesn't deal with default constructor constraint usage too clearly(only place I saw discussion on the inclass syntax was in the first section, not the whole spec) and the lack of non-default constructor constraints.

# re: DB2 will get .NET integration!

Sunday, October 26, 2003 4:46 PM by Frans Bouma
No product p1mping in the comments please. Kingsley: your comment is deleted because of that.

# re: Short list of non-obvious things determined from the C# 2.0 draft

Sunday, October 26, 2003 6:34 PM by (luKa)
There are something I cannot yet understand from Nullable<T> (I hope I'll put my hands on Whidbey very soon).

Implementing NullableTypes I've learned that every .NET built-in type have many differences from one other built-in type:
- String and Boolean types don't implement Operator< and Operator> for good reasons while other .NET built-in types do it
- Single and Double Operator== follow IEC 60559:1989 (IEEE 754) specifications while other .NET built-in types follow CLR specifications for Operator==
- Some .NET built-in type allow conversion that do not make sense for other operators (i.e. Int32 have a conversion operator to Double while DateTime don't)
- ...
- ...
- ...

Every type in NullableTypes (or in SqlTypes) implements specific feature to be very very similar to the corresponding .NET built-in type and to follow the Null Object pattern [1][2] avoiding conditional tests for null (if is-null then... else...) to spread like a disease in the source code.

What I cannot yet understand is how Nullable<T> can be full featured (as SqlTypes and NullableTypes) while C# generics don't implement 'user specializations' (i.e. enable implementation of Nullable<Double> from Nullable<T> adding specialized members and behaveour)?

ciao (luKa)
----

[1] Test-Driven Development - Kent Beck - Three Rivers Institute -
http://groups.yahoo.com/group/testdrivendevelopment/files/TDD17Jul2002.pdf
[2] Refactoring: Improving the Design of Existing Code - Martin Fowler, Kent Beck et al. - Addison Wesley Professional - 1999 - http://www.refactoring.com/catalog

# Without taking credit out of Youkon ORACLE is much better than Frans pouder-discovery text says

Monday, October 27, 2003 12:17 PM by Luis Moreno Campos
Frans: as a Oracle newbie at a already grown-up technology like Oracle RDBMS you should know better. I mean: Oracle is an ocean where you should have a nice boat to sail into before stating any decent comments. I'm Oracle certified and have 8 year experience at it, and I don't think the Oracle-Unix (or Linux) combination has anything comparable in the Industry (nor even DB2).

Dig a coupple of years more onto Oracle and you'll find yourself amazed a bit more, even with the tools you so dumbly classified as "Crap".

Cheers.

# re: Oracle 9i is already generations ahead and shows a .NET flaw.

Monday, October 27, 2003 12:37 PM by Frans Bouma
Luis: your way of stating things is like the way a lot of oracle supporters talk about their database of choice and it was the main reason I was not fond of Oracle. I say some nice things about the application, and the advocates still find ways to critisize me. :) It's like saying something nice about linux and get flamed by a bunch of advocates to start using linux for a few years before saying something nice about Linux... :)

Luis, I'm not a database newbie, far from it, to say the least. I've spend a lot of time reading Oracle's docs (which are hard to navigate and search, I compare them to SqlServer's BOL or MSDN, which are easy to search and navigate). When I compare the tools coming with Oracle with the tools coming with SqlServer, and the docs with the docs of Sqlserver, the oracle offerings fall flat on their face. Query Analyzer of SqlServer isn't the best sql tool there is, but it's miles ahead on any oracle tool that's shipped with oracle (toad is 3rd party).

SqlServer can keep up in a lot of areas with Oracle, its featureset is not that crippled that it is not able to run large databases succesfully. I just wanted to highlight some features that are in Oracle and not in SqlServer and which should be in sqlserver by now. However it seems that I may not comment on Oracle's features before I have worked with it for a long time? haha :) I'm sorry, but that's a little silly, isn't it? :)

But enough ramblings. The more I read your text, Luis, the more I regret I've ever posted this blog entry.

# re: DB2 will get .NET integration!

Tuesday, October 28, 2003 3:21 PM by Paul Gielens
Oracle is already working on a data provider for .NET. No support for CLR integration in the management system though.

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Wednesday, October 29, 2003 12:32 AM by Lee
When will Oracle be available? I need it bad.

# re: DB2 will get .NET integration!

Wednesday, October 29, 2003 5:48 AM by Frans Bouma
Paul: I use ODP.NET already for the oracle driver for LLBLGen Pro (which will be released next week). Its a good provider, but it comes in a 74MB download, which is way too much (the driver itself is just 4MB).

# re: It's released! LLBLGen Pro is gold! The next-gen O/R mapper for .NET.

Wednesday, October 29, 2003 5:49 AM by Frans Bouma
Lee: It's released on Monday November 3rd 2003, if no serious bugs show up :)

# re: Oracle 9i is already generations ahead and shows a .NET flaw.

Wednesday, October 29, 2003 3:55 PM by Abdu
The two databases serve different markets. Oracle is for the enterprise while sql server is for departmental and small businesses and for that, SQL Server does a very good job.

You have to be a full time Oracle dba (cost is high) to administer Oracle databases while SQL Server has nice GUI administartion tools, we developers do not need dba's to use it.

SQL Server is eating into Oracle's market and moving into more into Enterprise level while Oracle is still up there.

How many web hosting companies support SQL Server and how many support Oracle? Why is that. Price? Easy of use? ..?

That features you mentioned I can live without. The MVCC and transaction stuff would be handy. No one wants to be in a deadlock.

What happens when you copy a table to another database and server and forgot to copy the sequence object?

A full fledged Oracle .NET provider is Oracle's job not MS. They know their product best. Microsoft doesn't like to support competing products.
I am GM and I built a car that runs. It's your job to "accessorize" it to make it do more than what it was intended to do.

SQL Server was built years after Oracle started. Sybase's market is about 4% even though SQL Server was initially built using Sybase's technology. I think SQL Server is doing pretty good. Oracle and SQL Server are not in the same league. You should compare Oracle with DB2.

When you're a Windows shop, you don't care about crossplatform support.

Abdu

# re: Short list of non-obvious things determined from the C# 2.0 draft

Friday, October 31, 2003 1:34 PM by Eric Gunnerson
To address Roland's post - you will be able to have a public get and a private set on properties in whidbey

# re: VB Developers should learn to take criticism

Tuesday, November 04, 2003 8:29 AM by Mel Grubb
You are wrong!

heh, I said it first! :P

# re: VB Developers should learn to take criticism

Tuesday, November 04, 2003 8:31 AM by Frans Bouma
hehehe :)

# re: VB Developers should learn to take criticism

Tuesday, November 04, 2003 8:35 AM by julie lerman
Frans - I am not here to debate. I just wanted to point out that I was NOT saying anything about the language. Just about people saying vb programmers are idiots. That's quite different. I have never said anything about the merits (or lack thereof!!) of VB as a language.

# re: VB Developers should learn to take criticism

Tuesday, November 04, 2003 9:08 AM by Frans Bouma
Julia, again, you miss the point. My blog was about the fact that you even get offended by a remark made about VB.NET developers. Today I wrote VB6 code. That makes me a VB developer too. Do you think I feel offended when a C++ developer says VB/VB.NET developers are idiots? Not at all, because there is no reason for it. I know that I'm not an idiot, you and I know you are not an idiot, so why feel offended?

I get the feeling some people get offended because they KNOW the remark has a certain matter of truth in it, however the remark is not true for them, but for other VB.NET developers, and instead of facing the reality, people feel offended. I think that's the wrong reaction. I've seen a lot of silly VB developers in my life I can tell you that. That doesn't make the remark "VB is a language for idiots" true, because that's a wrong generalization, however among the group of VB developers, there are a lot of very low skilled 'developers', much less than you'll find among C++ developers. Not very weird, because VB is much easier to use than C++.

So instead of projecting the remark on yourself, look at yourself and if you find yourself not the subject of the remark, ignore it! After all, the remark is true for a given group of vb developers and I'm pretty sure you know that too. (not that any weblogs.asp.net blogger is among them, but they are out there)

# re: VB Developers should learn to take criticism

Tuesday, November 04, 2003 9:18 AM by David Williams
As a professional programmer (regradless of the fact that I use VB), the only problems that I have are:

1) When the powers that be (i.e. Microsoft) comes across with a statement that seems to state that the current language of MY choice is second class

2) When someone (anyone) looks down on me for working in a particular language. Come on now, I have been a programmer for 23 years. I have been a Fortran programmer, an x86 ASM programmer, a COBOL programmer, a VB6 programmer, a C programmer and now a VB.NET programmer. I look back on this list and have to state that they all had there problems, but were almost all THE language of choice at one time or another. Does that mean that they are GOOD languages? In honesty, no. Not one of them. If I had the knowledge, I would design the langauge that I want - and it would be good. ;) However, they got the job that I was hired to do done. Do not look down on me for using a tool to get paid. It is that simple.

David

# re: VB Developers should learn to take criticism

Tuesday, November 04, 2003 9:19 AM by John Cavnar-Johnson
Frans,

First, the comments you refer to were perceived (incorrectly I think, but still this is an important point) as criticisms of VB developers, not the language. There is a huge difference between criticizing a language and criticizing the developers who use it. Your post continues a trend in your blog of conflating those activities.

I agree with your point about the touchiness of VB developers in general, but I also think that your criticisms of VB are delivered in a rude and disrespectful manner. Statements like "the most stupid construct ever created by man" are offensive and unhelpful. If you're really concerned about addressing the problem, make constructive suggestions, backed up with reasoning. It's hypocritical to decry the flame wars without contributing to a constructive conversation.

# re: VB Developers should learn to take criticism

Tuesday, November 04, 2003 9:36 AM by Frans Bouma
John, exactly your remarks proof my point. I say something extra rude like "the most stupid construct ever created by man" and you find it offensive. It's a language construct which every language designer would declare "stupid" to begin with. I find it also very stupid.

Now, I can't find that and express that, (I even explain why though, but that aside) without reading remarks like "you express it in a rude and disrespectful manner". Disrespectful to whom? The VB.NET developers? I don't think so.

I used criticism on the language as my angle on the matter, because criticism on the language is the source for TWO problems:
1) people who love the language feel offended and feel the urge to offend/counter the remark. This is useless because that's not the point of the criticism.
2) the language looks weaker with more criticism and therefore people who still pick that language look (in general!) not informed that well.

I ran into 1) when I entered the debate about Refactoring and the renaming of it for VB.NET. Very odd. 2) is a main source for the prejudice (!) that VB.NET developers are less skilled than developers using other languages. That's why I picked that angle.

And I will keep on stepping on VB.NET developer's towes by expressing bad things in VB.NET in a more expressed way to make my point (but always argumented). The reason for that is that I'm pretty sick of it when I try to express a flaw in VB.NET nicely with arguments (like I've done in the past several times) I still get the mud thrown over me. People suddenly accuse me of starting language wars... Now, if I could avoid VB.NET for the rest of my life this wouldn't be a problem, but I can't. I have to use it from time to time.

And this blog was not about the flaws in VB.NET, but the fact that some VB.NET developers think they have to feel offended because Mr. Box finds them underrated developers (in general) while he perhaps was refering to the group of VB.NET developers who really doesn't have a clue what software development is all about (and sorry, but that's a reality).

# re: VB Developers should learn to take criticism

Tuesday, November 04, 2003 9:54 AM by julie
Frans - You are right about the fact that I (and some others) are being (wait - no - "was" - because I will no longer be!) overly sensitive. I did happen to write about that in my post last night saying "i'm not going to worry about that anymore because I know I'm good at what I do". So your point is completely taken in that regard. On a lighter note, understand that before .NET, I had never really had so much involvement with non-VB developers. So hearing all of this opinion so much in the past few years was new and it just seemed to pile on which is why I and maybe others felt so much pain all of a sudden. If you look at Carl Franklin's comments in one of those posts, he too, says "aw c'mon Julie get over it". He's been hobnobbing with non-VB developers for years and so he was used to it.

# re: VB Developers should learn to take criticism

Tuesday, November 04, 2003 10:05 AM by Cory Smith
You want to talk about stupid language constructs? OK, here goes... the whole semi-colon 'thing' that every C based language uses (oh and don't forget pascal based). Why do I have to tell a language parser where the end of line is? Just because all of these languages do this doesn't mean it's correct. At least with VB, I only have to (on rare occasion), use the dreaded underscore character.

Now, on to another point, it's not about taking critisism for being one type of developer or another. When is the last time you heard "c# developers are idiots" or "c# sucks"? Lemme see... you probably haven't. VB.NET developers are usually respectful of not being critical of other languages. Now you might say that this is because VB.NET developers "know that other langauges are superior". I don't believe this is true. I think that VB.NET devepers have a completely different mindset... one that is focused on getting the job done. Not one of being some technically superior snob who has joined the latest fad (yes, I just called C# a fad).

I use every mainstream language I can get my hands on. VB.NET, C#, C++/ATL/MFC, Managed C++, Delphi (at one time), VB6, and Java. I can tell you that there are things I hate about every single one of these. There are things that I think are idiotic from my perspective, but I'm not going to blab this because I have enough respect for the language designers and their specific target audience not to do so. I'm just not that target audience for the whole pinky finger gymnastics associated with semi-colons and squirly braces. I also like seeing End If, Loop, End While, End Function, End Sub.

I don't consider myself thin skined concerning being bashed around for being a VB.NET developer. However, I will be more than happy to put on a pair of gloves and enter a ring for a good fight if something someone says is completly off base concerning VB.NET. For example, the underscore character... as stupid as it may look, I prefer it over the alternative. ;-) Also, your ignorance is showing about VB.NET when you point out the 'On Error *' language construct. This is partially in there for allowing a path to transition to VB.NET from VB6. No real VB.NET developer would choose to use On Error after learning about Try/Catch; unless for some very specific and rare instance. Do I like On Error... no... I've never liked it. However, I look at it in the same manner as those stupid short stubby screw drivers you probably have in your toolbox. There are those rare times when you actually need that stupid tool ;-)

# re: VB Developers should learn to take criticism

Tuesday, November 04, 2003 10:05 AM by John Cavnar-Johnson
Frans,

I'm starting to feel this is a hopeless conversation. If you can't see that phrases like "most stupid [insert anything here] ever created by man" are rude and offensive, then I don't how to get through to you. In this case, you're being rude to the designers of the language.

Think about this, many people are able to discuss the strengths and limitations of various languages without starting flame wars, but you say you "get mud thrown over" you. Perhaps, it's not just the oversensitivity of VB developers, but it's also your tone that invites the "mud".

As long as you engage in guilt by association, you will get a pretty strong reaction from people. If I were to go around complaining that people named Frans are rude, self-important, close-minded, and bad spellers, I wouldn't just be insulting you, I would be insulting people I've never met. Now, I wrote that sentence in an effort to help you see how your posts seem to others. I do not judge you or anyone else on the basis of a few comments on a blog. I don't think you are really any of those things, but you come across that way to me when I read your posts. If that's the impression you want to leave, then that's fine. However, if you want to leave a better impression with people, a little more civility might be called for.

# re: VB Developers should learn to take criticism

Tuesday, November 04, 2003 10:08 AM by Frans Bouma
Julia, thanks for this comment :)

You got to believe me, that I once also got very offended when some C++ person told me VB was a language for dummies, while that person didn't even finish his CS study on a university...

But you get use to it, and it's not worth the trouble. It's like getting offended when some Linux Sysadmin tells you that windows sux and is used by stupid people. Who cares! It's an opinion like there are so many in this world.

# re: VB Developers should learn to take criticism

Tuesday, November 04, 2003 10:16 AM by Frans Bouma
Cory:
"You want to talk about stupid language constructs? OK, here goes... the whole semi-colon 'thing' that every C based language uses (oh and don't forget pascal based). Why do I have to tell a language parser where the end of line is? Just because all of these languages do this doesn't mean it's correct."
True. In fact, when you forget the ';' it will tell you exactly where you forgot one. :) I'm all with you here :)

But moronic language constructs was NOT the point of the blog, it was a tool to illustrate something ;)

"I think that VB.NET devepers have a completely different mindset... one that is focused on getting the job done. "
This is generalization, the same kind as "VB.NET developers are less skilled". I don't know why a lot of VB.NEt developers are not that critical towards their own language, perhaps because a lot of them are also not critical towards Microsoft or the OS they're using. Being critical using arguments isn't bad.

"No real VB.NET developer would choose to use On Error after learning about Try/Catch; unless for some very specific and rare instance."
I fear that that isn't true, at least not in the situations I've been in with VB.NET and other developers...

However also you feel it disrespectful when you find something stupid about a language. You also think in a framework where criticism is something bad I get the feeling. Don't. Criticise what should be criticised, with arguments. Only THEN ISV's know what to change to improve their products.

# re: VB Developers should learn to take criticism

Tuesday, November 04, 2003 10:23 AM by Frans Bouma
"If you can't see that phrases like "most stupid [insert anything here] ever created by man" are rude and offensive, then I don't how to get through to you. In this case, you're being rude to the designers of the language. "
Sorry? It's a free country, and I've placed an argument withthe statement why the "_" (the space required in front of it not mentioned) is stupid. If that's good design, I don't know what's bad design.

Besides that: YOU feel offended by it. Now, THAT's the whole point of it. Not the argument of that silly underscore, it's there, it will be there, get over it. The point is: YOU get offended by reading that comment on VB.NET.

Now, John, think about that for a change. WHY are you offended? Because I say something rude about a given piece of software you didn't design and which is rude for the designers which you aren't? Isn't that a little odd :)

I hope you now understand what the point of the blog was: NOT the vb.net flaws (or the C# stupidities for that matter) but the weird reactions some people show when they read criticism about their language of choice or a generalization remark about users of a piece of software they also apply to because they use it once in a while.

You may keep being offended by the 'rude' remarks I made, you keep proving what I ment.

# re: VB Developers should learn to take criticism

Tuesday, November 04, 2003 11:24 AM by Phil
Firstly, I agree about "_". It drives me nuts. However, the alternative is to end every statement with a ";" which is not necessarily any better.

Secondly, I agree that the differences are just a matter of preference. The case sensitivity of C, C++ and C# has annoyed me for the last 15 years or so. On balance, I prefer VB.NET for this reason, but I admit it is not important.

Thirdly, even if VB died out, it would live on in C# and Windows Forms. The Windows Forms programming paradigm owes more to VB than, for example, to MFC or 'traditional' Win32 programming.

Fourthly, VB6 programmers have a right to be angry with MS, because they have been badly treated. For many big projects, migration from VB6 TO VB.NET is unrealistic, but VB6 has been discontinued. What other manufacturer would dare treat its users like this?

Lastly, this reminds me of people making fun of Bob Dylan 20 years ago. Bob had the staunchest of fans, but was easy poke fun at.

So basically, I agree. Loosen up VB.NET programmers.

# re: Oracle 9i is already generations ahead and shows a .NET flaw.

Tuesday, November 04, 2003 11:57 AM by Mitch
anyone who he says that Oracle docs are better than Microsoft's is whacked. Everyone I know gripes about them. The other day I downloaded a Java sample which wouldn't even compile due to a host of syntax errors. This was on OTN. It's a joke. Every morning, the forums are down.

# re: VB Developers should learn to take criticism

Tuesday, November 04, 2003 2:35 PM by John Cavnar-Johnson
Frans,

I never said I was offended. Indeed, nothing you have done offends me. Freedom generally includes the right to make offensive, rude, and obnoxious remarks. I don't have a problem with that, but a wise man once spoke about freedom by saying that while all things are permissable, not all things are beneficial.

The way you expressed your opinion about the underscore says more about you than about whether or not the way VB uses the underscore is a good design. I believe the tone of your comments contributes to the problem you are blogging about. If you want to convince people that you are correct (and, honestly, I don't know that that is your aim), I'm suggesting that you should use different tactics.

# re: VB Developers should learn to take criticism

Tuesday, November 04, 2003 2:44 PM by Alec Hurbert
IMHO, here's the irony; I've come across many VB.NET programmers (even at the PDC) who hate critisism when something degrading is said about their core platform or their breed of developers, and then there are many C# developers (even at Microsoft) who brag about C# being light-years ahead of VB.NET when they havne't even progressed futher than a "Hello World" snippet in VB.NET. Cribbing about syntax by means of an underscore is no fun and makes no sense to me. On a broader note, (finally) ANY .NET language is as powerful and as resourceful as the other. Live with it!

English is by far the most widely used language in the world but it doesn't make the French or Chinese or Sanskrit dialect any inferior. My point is: guys stop thinking in parallel paradigm.

# re: VB Developers should learn to take criticism

Tuesday, November 04, 2003 3:09 PM by Andrew
Beginers All-Purpose Symbolic Instruction Code.
C? It all flows from there.

VB.Net introduced a lot of new constructs, but they chose to give the VB style names instead of using standard terms.
Do the other .Net language rename everything (say J# ,Cobol.Net).

There are two seriously different groups who moved from Studio 6 to Studio.Net:
Those who wanted to stop using Basic and those who wanted to continue using Basic.

I've seen good developers who want to continue using basic and bad ones who were eager to move to c#. There is no fast rule for which will do which.

I think that "..VB.NET devepers have a completely different mindset... one that is focused on getting the job done" is not far off track, but where does that leave c#?


Personaly, I have a very strong preference for c#, its a question of style.

A semi-colon indicates the end of a line of code, of an instruction. I don't like long lines of code, so I really don't like using " _" to say this line does not end.

Have you seen the source code of programs not written in "English"?

# re: VB Developers should learn to take criticism

Tuesday, November 04, 2003 3:17 PM by Alec Hurbert
"Have you seen the source code of programs not written in "English"?"

An analogy my friend .. offtrack but just an analogy :)

# re: VB Developers should learn to take criticism

Tuesday, November 04, 2003 3:30 PM by java_poet
Reading all this, I wonder how C# coders will take the "healthy" critism when compared with SunONE/Java.... does C# support checked exceptions, inner classes, cross platform portability or the fact that a class is not the smallest unit of distribution of code? Java has - been there and done that!

Atleast with VB.NET you can deliver the final product quicker. What good is C# in between VB.NET and Java?

# re: VB Developers should learn to take criticism

Tuesday, November 04, 2003 3:44 PM by Paul Gielens
java_poet: We don't care just as long as you give valid arguments which these are btw. As soon as I personally feel any language or platform beats the one I'm currently working with I'll switch, switch jobs even just to make sure the technology first my personal needs. Yes Frans language, platform to some extends it's "a way of life" but people tend to overreact just to increase their post count.

# re: Oracle 9i is already generations ahead and shows a .NET flaw.

Wednesday, November 05, 2003 1:12 AM by wayne
Has Microsoft bothered to fix the feature/bug that you can only have one LONG per table, and that you must code your sql select statements (in ADO etc) in the correct order so that the LONG field is at the end of the query?

I was geniunely amazed when I ran into this bug myself, and after doing some research online, it turned out that a LOT of people had run into this bug, and that Microsoft even acknowledged it in a Knowledge Base article, but didn't feel it deserved a fix/patch. What a great attitude.

Oracle is a dream to work with vs SQL Server having used them both for 5+ years as developer and frequent Sysadmin/DBA on Windows, Linux & Solaris.

# re: (Dutch) Tot over een uur op de DotNed meeting!

Wednesday, November 05, 2003 8:04 AM by Jeroen
Ohja, which reminds me dat ik onderweg moet :)

# re: VB Developers should learn to take criticism

Wednesday, November 05, 2003 8:47 AM by Johnny Hall
"Atleast with VB.NET you can deliver the final product quicker. What good is C# in between VB.NET and Java?"

It's not VB.NET vs C# vs Java. It's .NET vs Java.

VB.NET and C# are, to all intents and purposes, the SAME THING. At least at the moment.

I don't think about language so much as about the technologies (ASP.NET, ADO.NET, BCL, XML, ...).

I choose to use C# because I prefer the syntax. My colleague prefers to use VB.NET, 'cos he's more comfortable with it. We can work together. I don't think any the less of his skills, because we're both .NET programmers.

# re: (Dutch) Tot over een uur op de DotNed meeting!

Wednesday, November 05, 2003 9:27 AM by Paul Gielens
Ik sla vandaag over... s'me net iets te ver voor die paar uurtjes. Ga je trouwens ook naar Zweden eind Jan?

# re: VB Developers should learn to take criticism

Wednesday, November 05, 2003 9:30 AM by Andrew
Alec : I think the language analogy is good, but I don't think that languages are all the same underneath.
Each has hidden assumtions about "reality". A concept may be encapsulated in a single word in one language and yet require several words or even phrases in annother.

I work in a mixed language environment, where I spend more time speaking my second language than I do speaking English.

I have seen a lot of code written by people who's first language is my second, and for the most part, the quality of their code is tied to whether they try to write code in "English"
or not. They try to mix maps.

I've never worked in a non-English based programming language, and I pretty sure if I did, I would have the same quality issues if I tried to code in "English" in that prog. lang.

I'm not a linguist, but from what I hear, Esperanto is supposed to be "the best language"...

# re: VB.NET developers, continued

Wednesday, November 05, 2003 9:33 AM by Greg
Let me add my vote too.

MS fix it right...

WORSE case, make the menu optional and allow VB'ers to enable it via the options. Don't make it completely unavailable.

And don't make us have to hack a way to enable. You KNOW we will find a way to make it, or like functionality available. So instead of the standard, we'll have a bunch of custom written solutions (think XML comments in VB)...

MS PLEASE don't make us go through this...

Do it right, treat you VB.Net programmer like they are professionals...

# re: (Dutch) Tot over een uur op de DotNed meeting!

Wednesday, November 05, 2003 11:02 AM by Zef Hemel
Delft is zo ver weg als je in Grun'n woont :(

# re: VB.NET developers, continued

Wednesday, November 05, 2003 11:03 AM by Robert McLaws
I 100% agree. MS's job is to raise the lowest common denominator, not pander to it.

# re: (Dutch) Tot over een uur op de DotNed meeting!

Wednesday, November 05, 2003 1:22 PM by Frans Bouma
Paul: Ja! :) Jij bent ook uitgenodigd door Jimmy? Lijkt me wel erg interessant :)

Zef: inderdaad :)

Het was overigens erg interessant. Dino's verhaal was erg indepth maar wel leuk. :)

# re: VB.NET developers, continued

Wednesday, November 05, 2003 5:56 PM by Daniel O'Connell
If I can ask, how exactly is implying that VB.NET developers require their IDE to teach them a term treating them like professionals?

# re: VB.NET developers, continued

Thursday, November 06, 2003 6:15 AM by Frans Bouma
Daniel:
Not all terms of an industry should be known by everybody. However when you use a given set of tools and you don't know the correct name for these tools, you don't really know that you use them when you see/hear/participate in discussions about these tools. Also: all C# developers will be confronted with the term, will learn what it means. All VB.NET developers will not, and will thus not be forced to learn what it means.

# re: VB Developers should learn to take criticism

Thursday, November 06, 2003 12:32 PM by Abdu

VB.NET developers are under rated. I mean they are paid less for the same project than C# developers. C# has a prestige associated with it. I am just talking based on real life.

abdu

# re: VB.NET developers, continued

Thursday, November 06, 2003 11:33 PM by Daniel O'Connell
> Not all terms of an industry should be known by everybody.

I would say will, not should. Should implies that there are things that people have not only no reason to know, that they shouldn't be told, excluded if you will. That is BS in my opinion, and isn't that what the whole argument is about, people suggesting that there is a term that VB developers shouldn't know?

However, I expect any decent VB.NET developer to be capable of learning on their own, just as I would any C++, Java or C# developer. Claiming that only via IDE support wil the VB developrs gain knowledge of refactoring or any other technique suggests that people(or you atleast) don't think VB coders actually try to learn and stick strictly to VB and its IDE. Any developer who would be involved in such a discussion should be well aware of what the general term means, even if it is not in the IDE. Implying otherwise, to me anyway, implies that the users of the IDE are not as dedicated as the rest of the industry.

# re: VB.NET developers, continued

Friday, November 07, 2003 5:56 AM by Frans Bouma
I ment 'Will', typo. (I'm not a native English speaker).

I also expect any developer to do a fair amount of learning but that's not the point. The point is that when you use a feature X, you should know hte feature you use is named X and not Y. As you can't know everything (a lot of C# developers will learn about refactoring whenthey open the IDE I'm sure), and when you DO use X, it is not more than appropriate the IDE, the documentation and examples/tutorials show you that the feature X is called X and not Y. That's the point.

# re: VB.NET developers, continued

Friday, November 07, 2003 1:14 PM by Bruce Onder
My own experience is that many .Net developers don't know what refactoring really is, unless they also know what unit testing and design patterns are. It's not a language thing as far as I can see -- I have a client who is a VB.NET shop that, because their coders to test-first development using nUnit, can refactor code to their heart's content because a good suite of unit tests will tell you if you messed anything up in your refactoring.

I also know tons of C# coders who don't write unit tests, so therefore any "refactoring" they do is essentially just mucking about with the code.

--Bruce

# re: (Dutch) Tot over een uur op de DotNed meeting!

Saturday, November 08, 2003 4:33 AM by Paul Gielens
Ja, zeker wel interessant! Ben alleen nog aan't tobben (heb tegen die tijd een oplevering en verhuizing van kantoor) zelf rijden of vliegen, hmm. Zin om iets te organiseren? Wel zo gezellig.

# re: Here's a (big, bad) difference between VB.NET and C#

Wednesday, November 12, 2003 5:30 PM by Addy Santo
You don't have to look THAT far to find crippling differences - lack of C variable types (such as unsigned bytes, words etc) makes VB.NET totally unusable for many low level scenarios such as encyption, hashing, CRC algorithms, etc.

# re: Here's a (big, bad) difference between VB.NET and C#

Wednesday, November 12, 2003 6:53 PM by Roy Osherove
This might sound stupid, but how would you go about doing private implementation of an interface? Did you mean not declaring the interface name in the class declaration and just writing out the methods of the interface as regular methods?

# re: Here's a (big, bad) difference between VB.NET and C#

Wednesday, November 12, 2003 9:03 PM by Mickey Williams
Well, my guess is that sort of thing would just make Mort's head hurt, so it has no place in VB.

As far ass private implementations:

interface IFoo { void Bar(); }

class X: IFoo
{
void IFoo.Bar() { }
}

elsewhere, you can't do this:
X x = new X();
x.Bar(); // not allowed

but you can do this:
IFoo f = x;
f.Bar();

# re: Here's a (big, bad) difference between VB.NET and C#

Wednesday, November 12, 2003 9:05 PM by Mickey Williams again
ROFL: make that as, not ass

# re: Here's a (big, bad) difference between VB.NET and C#

Wednesday, November 12, 2003 10:15 PM by Roy Osherove
Micky, Thanks. BTW, I'm a Mort :) My head isn't hurting one bit, but my pride is a little.

# re: Here's a (big, bad) difference between VB.NET and C#

Thursday, November 13, 2003 2:57 AM by Sander
Can't you use shadowing to resolve this issue?
Use the Shadows keyword on the GetObjectData() method. From the Visual Basic Language Reference: "If the shadowing element is not accessible from the code referring to it, for example if it is Private, the reference is resolved to the shadowed element."

# re: Here's a (big, bad) difference between VB.NET and C#

Thursday, November 13, 2003 3:03 AM by Frans Bouma
Sander: No, because you have to specify Implements ISerializable with the class, which is not allowed. :)

Mickey: indeed, that's they way you can do it in C#, and that's the way MS did implement ISerializable on DataTable. Of course that's a bad way to design a class, nevertheless, VB.NET can't 'fix' that, only C# can.

# re: Stored Procedures vs. Dynamic Queries.

Thursday, November 13, 2003 5:39 PM by jack
sql server blows
mysql rocks

# Interface reimplementation

Friday, November 14, 2003 6:57 AM by TrackBack
Will be supported soon.

# re: Serious ASP.NET Editor flaw lives on in VS.NET 2003

Friday, November 14, 2003 9:10 AM by FC
First, thanks for a good summary of the issue. Microsoft has had many major flaws in their systems, which is not unexpected considering the sheer volume and scope of them. Professional programmers understand that and can live with it. That's not the real problem. When a major flaw is found by the first person, Microsoft SHOULD be telling everyone about it in any way they can so every single programmer doesn't have to waste time finding it anew. As usual though, they take what can only be described as an immature approach and make a point of minimizing it to the point where you have to search and search just to get the REAL scoop from some user posting. "Flaw? What Flaw? Oh, you mean THAT flaw. Well, yeah, of course we knew about it and now that you mention it, let me tell you all about it..." Just to drive home the importance of this particular flaw, it isn't just that the text gets bunched together in an unreadable format. The formatter actually rearranges the tags within a control's specificatins. For me, I have a dropdownlist on a page used to edit a record, and set the datasource using a function in the codebehind page. I also set the current index value using another function. So I have a "datasource =" and a "selectedindex =" within the dropdownlist tags, so when the screen comes up, the dropdownlist contains all the available selections and is sitting on the one currently selected for that record. The reformatting actually moves the selectedindex IN FRONT OF the datasource specification. Since the entire point of a tagging system is that it is NON-POSITIONAL, what moron even considered altering the coding in this way? The interpreter is also flawed, because it takes in this new line of code and reconciles the tags from left to right! So basically, my "adjusted" code now tries to set the selectedindex of a datasource that doesn't exist yet, and the program crashes. As for Mike's statement, give me a break. This is ASP.NET, the entire foundation of which is that editor. It's obvious from the example I just mentioned that the reformatting is reading the controls in by tagset, analyzing them for "reformatting" and writing them back. It just happens to be totally screwing up the "writing back" part. Now we're being told that the integration is too deep? All I can say is, Mike, stop treating the experienced programmers of the world like idiots. It's more likely that Microsoft has done what they usually do, which is to put out a brand new product with version "1" before it is really ready, to beat the competition and coordinate with their other schedules. Then they move almost all the knowledgeable staff onto the Version 2 project and leave a support staff handling updates and bug-hunts and as Mike is doing, just plain stalling until Version 2 is ready. Here's a few things Mike could do in a quick service pack that are really easy: Since there are checkboxes that supposedly control the autoformatting in Tools/Options, but DON'T, take them out. It just means making them invisible and they must have somebody there who can handle that. When this service pack is installed, include a document that completely describes this problem and all of the other ones like it that I haven't personally found yet. Since that is just typing, they should be able to handle that as well. Unless of course, their keyboards are too deeply integrated into their editors....

# Stored Procedures versus Dynamic SQL - the old debate...Frans Bouma's take...

Tuesday, November 18, 2003 1:11 AM by TrackBack

# Why stored procudures can be evil?

Tuesday, November 18, 2003 2:11 AM by TrackBack

# Stored Procedures

Tuesday, November 18, 2003 2:33 AM by TrackBack

# Stored procedures vs Dynamic SQL

Tuesday, November 18, 2003 2:53 AM by TrackBack

# Stored Procedures or not?

Tuesday, November 18, 2003 3:20 AM by TrackBack

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 6:57 AM by Thomas Tomiczek
My words :-)

# ASP.NET dynamic SQL vs. stored procedures - what's right?

Tuesday, November 18, 2003 6:58 AM by TrackBack

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 7:42 AM by Duane
Sorry Frans - I have to respectfully disagree, life without Stored Procedures is silly.

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 7:49 AM by Frans Bouma
Duane: can you elaborate on that a bit? Just stating it's silly great but not a solid argument.

That said, I write a stored procedure sometimes, the last one I wrote was a sequence emulator stored procedure. However the occasions I have to are countable on one hand, while I do database development every day.

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 8:10 AM by Wallym
All I can say is that I respectfully disagree 150%! Stored Procedures do provide a dramatic performance boost over dynamic SQL when needed. A generic DB access component is a disaster waiting to happen, as it depends on a properly designed database, which no one will ever create.

Wally

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 8:17 AM by Scott Galloway
Taking a binary approach is silly, you can't sriously be saying that for every occasion dynamic Sql is better - a few instances where I disagree - Indexed Views, these are essentially SPs, and are invaluable in a scalable environment (Indexed views representing an essentially 'static' view on data, updated when the underlying data is). Using Table Variables in SQL Server 2000 from Stored Procedures lets me composite and filter my resultset before returning it to the client app thereby substantially reducing my network traffic, connection usage, memory footprint for the app and therefore vastly increasing my potential scalability. Your argument about using Views is pretty limited in my opinion, Views are not updatable, I can't get a resultset from one SP and based on that, update the data in my view then filter the data in my View to produce the desired resultset - even if I could, I would be storing a HUGE resultset for many operations where I only require a couple of items - Views cannot replace SPs in most circumstances.
Quite simply, I also do serious web application development every single day, 99% of requests to the DB are best served by stored procedures, I have worked a lot with Dynamic SQL in code previously (forced to when using MySQL with PHP / Java), the risk of introducing errors into really quite complex Dynamically built SQL statements is really pretty high - plus it's pretty tricky to debug every possible scrnario unde which the statement may be built.

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 8:20 AM by Frans Bouma
Wallym: the dramatic performance boost is not there, because the stored procs are threated as queries which arrive at the sql engine: they are compiled at runtime.

So they're not faster, they are sometimes even slower, because you have to code constructs in the stored proc to add some sort of flexibility (like a bit parameter which is used in an IF ELSE clause. That will force a recompile every time!).

Don't believe the myth, read the docs (Books Online). They're clear on this.

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 8:26 AM by Thomas Tomiczek
::All I can say is that I respectfully
::disagree 150%!

Ah, kids playing.

Look, how can you disagree when the documentation says rob is wrong?

How can you disagree for arguments given when you basicaly have NO arguments.

::Stored Procedures do provide a dramatic
::performance boost over dynamic SQL when
::needed

Factually total bullshit.

Stored Prcedures CAN provide a significant performance boost in certain situations when you are able to move processing fom the application layer to the database. Not "when needed" as you say, but "when needed AND when the data processing fits into this condition".

Stored Procedures are NOT significantly faster than dynamic SQL if all the Stored Procedure does is a single INSERT/UPDATE/DELETE.

This is another fact that is well documented (in this little thing called documentation).

::A generic DB access component is a disaster
::waiting to happen, as it depends on a
::properly designed database, which no one
::will ever create.

Careless use of SP's are a desaster HAPPENED. Get this - the generic component may be a desaster waiting to happen, but having hundreds of objects that require some gpoor guy to create and maintain hundreds of methods that are nothing more than simple processing IS A DESASTER THAT HAPPENED.

By the time this poor sould is finished with his little task, other people have already finished the complete application.

SP's are VERY nice in a lot of situations, and every generic layer COULD utilize them actually (not a lot now, but definitly a lot more once YUKON is around). But stating "they are better. Period" is not a sign for maturity at all.

Counter the arguments Frans has put up, or realize that you dont have any good arguments at all.

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 8:29 AM by Frans Bouma
Indexed views can be accessed as normal views, by normal SQL. Views are something else than a stored procedure, Scott. Also your argument about connection usage is odd: connection pools will serve you well.

True, it requires some work to get a dynamic query generator right, but once you have one, you don't have to recode it again.

"I can't get a resultset from one SP and based on that, update the data in my view then filter the data in my View to produce the desired resultset - even if I could, I would be storing a HUGE resultset for many operations where I only require a couple of items - Views cannot replace SPs in most circumstances. "
Views are used to control the security issues. SP's are code-statements, views can be seen as static tables, for SELECT statements, FROM clauses and WHERE predicates. you can for example update rows in a table using the FROM clause to filter on a view's data. Views aren't limited, they are as flexible as tables, because they are a view on tables, replacing those tables in logic which would otherwise be performed on the tables. Views don't replace update stored procedures, they can be used to control security where sp's are used to do that.

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 8:36 AM by Phil Scott
sprocs performance increase isn't just due to the precompilation. It is also due to the reduction of round tripping to the client (which isn't cheap), and reduction of network traffic that comes with it (ahh, good times).

As for the security mechanisms, I do a lot of training with healthcare and government bodies, and regulations require them to not give developers access to the underlying tables. Period. I guess you could use views for everything, but you'll have to be writing after triggers to get that to work and at that point you might as well be writing stored procedures anyways.

And most people are doing security for more than two roles. If you are doing security on a column basis for even just five roles, may god have mercy on your soul. You will screw up, you will waste time and you will end up opening more data to people that don't need it. Just like security based on roles is easier to implement, security based on tasks is also easier to maintain and implement.

Of course, that's just my opinion, I could be wrong. It's interesting to see everyone else's opinion on the subject though.

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 8:42 AM by Scott Galloway
Phil...the round trip argument is pretty much what I was trying to get to with the connection stuff...I also completely agree with your other arguments :-)

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 8:45 AM by Paul Wilson
Excellent post. We had a major project at my last employer that had a DBA writing (or at least approving) the stored procs for rather routine CRUD, a junior developer writing wrapper classes around all of those stored procs, and then the application developers only had to worry about consuming those data libraries. Looked great on paper, since this was an n-tier architecture with lots of separation, and we all know that's supposed to make our lives and maintenance easier. The problem was that it did not make anything easier, since nearly every change in the database required at least 2 people, if not 3. These changes also had to be coordinated very well, since anyone done out of sync, or too late, would break the build, and this did indeed happen. I think our DBA felt very threatened when I talked about O/R mappers, but I honestly think these tools would actually finally have given him the freedom to worry about the database design and performance optimization, instead of writing routine CRUD procs. The junior developer would also be freed up to actually become a real application developer, instead of just being another wasted body. So, down with stored procedures -- long live SQL!

# Does an OR Mapper need to use dynamic sql?

Tuesday, November 18, 2003 8:46 AM by TrackBack

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 8:59 AM by Marc Hoeppner
@phil: 'It is also due to the reduction of round tripping...'

This is not the case, you can use a whole batch of T-SQL commands in a single call resulting in a single network roundtrip, so it is the same number of round trips as if you would call a SPROC: 1!

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 9:21 AM by Phil Scott
Marc: Good call on saving the round tripping with multi-statement SQL.

But I would hate to run into this type of code personally. I mean, you are basically writing a stored procedure at that point and hard coding it into your app. Most of my development is in VB, but I would have to switch to C# just to be able to get away with not having to use the dreaded _ and & to build the string together to get that sucker to run, and be maintainable. Once again, my personal preference.

Now as Paul brings up, your opinion of stored procedures really depends on your environment too. I personally would I simply set fire to the building with the three person tag team on the CRUD development.

It might just be the relatively small nature of the projects I've been working on (15-30 tables), but I've managed to escape writing simple CRUD sprocs. Most of my sprocs look something like "AddOrder", "GetOrdersByCustomerID" and things like that. I have been given the power of writing my own sprocs, if I had to go to a DBA to get that done, well, if you've seen kill bill you know the type of violence that would ensue.

The only time I seem to not be using stored procedures is when I'm working with data adapters and datasets. I see no real reason to use stored procedures for the reasons outlined here by everyone else. But in my connected environment land, I'd rather use stored procedures instead of using the work arounds that people have presented here.

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 9:25 AM by Frans Bouma
Paul: exactly my point.

Phil: giving developers access to stored procs is not helping you a lot. You have to insert/update data anyway, there ARE sp's in the API which do that. So the argument is pretty moot if you ask me, but nevertheless, if you are REQUIRED to do so (even when the arguments for those requirements are not that great) you don't have a choice. If you DO have a choice: think twice.

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 9:30 AM by Thomas Tomiczek
@Phil Scott:
::But I would hate to run into this type of
::code personally. I mean, you are basically
::writing a stored procedure at that point and
::hard coding it into your app

Totally wrong.

If you do it right, you write a SQL generator that is able to take advantage of batching, as I do right now with the EntityBroker. Nothing else.

My programs will use batching, but I will never "code a SP into my app". Never.

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 9:31 AM by Marc Hoeppner
@Phil: Is it really that different? - You are going to 'harcode' it anyway: You build your SQL either with Query Analyzer or another tool. When you are done, you type in your SQL code into an editor (=hardcode it) and run the program to get the results. Now, in one case your editor may be the SQL Enterprise Manager, creating a SPROC. In the other case this may be VS.NET and you enter the T-SQL in a VB.NET or C# script. In any case, you effectively 'hardcoded' it!

And I agree the @ really helps :)

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 9:31 AM by Mike Potter
Simply wrong. There are things a Stored Procedure can do that would take many round trips for Dynamic SQL.

If you think sending a huge multi-statement query request across the wire is more efficient that a simple SP call - you haven't played with a slow connection much.

I don't know how many times I have found a bug in a Stored Proc, fixed it and did not have to redistribute client code.

Code reuse between applications is greatly enhanced. A list of active employees is made available without having to give rights to the Personnel DB to every Tom, Dick & Harry.

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 9:37 AM by Frans Bouma
Marc:

How is:
myCustomer.Save();

or
DaoAdapter dao = new DaoAdapter();
dao.Save(myCustomer);

hardcoding sql?
It's not. You require logic to distinguish insert from update, when update, what to update, etc. Nothing is hardcoded. That's the point.

Filtering on entities in the database is dynamic: you formulate your filter right there where you need it. This for example requires 2 arguments. If you want that in a stored procedure, you would add 2 parameters. Another query in your app does the same filter, but with 3 arguments. You have to alter the stored proc or create a new one. Adding a new parameter will break the 2 parameter call. So you have to alter THAT CODE as well. Which is weird, because with the dynamic query you wouldn't have to alter that query.

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 9:52 AM by SteveL
Right-on! I've been on the stored proc bandwagon long enough.

Eliminating stored procs is not silly. I'll take a nice and tight database layer over procs any day.

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 9:56 AM by Marc Hoeppner
@Frans:

I was just replying to Phil as he said he feels that using SQL inside code is 'hardcoding' it (if I understood him correctly). So I was just comparing SPROCs to 'hardcoded' SQL inside a SqlCommand, for example :)

Now, if you enter the world of dynamic SQL for CRUD operations you are absolutely right. If you don't use such a ORM tool, you _will_ have to hardcode your CRUD SQL somewhere, either in a SPROC or inside a call to, say, SqlCommand()!!

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 10:01 AM by Marc Hoeppner
@Mike:

>Simply wrong. There are things a Stored Procedure can do that would take many round trips for Dynamic SQL.

Care to share an example?

>If you think sending a huge multi-statement query request across the wire is more efficient that a simple SP call...

Nobody says that. The point is that a multi-statement query will be _as fast_ as a simple SP call. Not faster, not slower :)

If you work across a 56k modem to your DB, you are indeed working on a different set of problems. In this case, I agree with you that even the few extra bytes like a few hundred bytes of T-SQL code may add up.

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 10:02 AM by Frans Bouma
Marc: hardcoding crud statements is not something you have to do. Using a dataset for example, you can create your insert/update statements on the fly. The data you have to use in an insert/update statement lives somewhere, you can use that to create the statement. Using a generic block of code you can reuse.

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 10:11 AM by Nielsz
So, when is your Database Object released? :P

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 10:13 AM by Phil Scott
Marc, you understood me correctly. Just poor wording on my part. At 10am my brain has flipped it's "write coherent" bit on.

Of course it isn't that different, it is just a matter of preference for me. I'd much rather have that code as stored procedure on the server than on the client, that's all. And as Mike said, depending on the type of connection sending a 2000 byte sql statement vs a 20 byte stored procedure name might add up depending on the architecture and the clients needs.

O/R tools, and dynamic sql generators are always great tools to have, and if I have access to an easy to use and powerful one I'd take that any day of the week over writing sprocs by hand. But not everyone has the resources or even the need to have such a tool on hand.

I can't see how anyone in this case has been totally wrong or how one way of doing things would be the "right way" over another. Each method is going to have it's pros and cons. I think if you are using an O/R tool or the DataAdapters you aren't going to be seeing any benefits from using stored procedures. But for those who are (god forbid) using DataReaders and sending SqlCommands directly, I feel I'd rather use sprocs for that.

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 10:14 AM by Marc Hoeppner
@Frans: Using CommandBuilder?? - This is definitely _not_ a good idea. It may work for simple tables, but as soon as you start to have more complex scenarios, it stops working. 'Complex' scenarios start with using JOINs and multiple PKs etc.

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 10:15 AM by JW
At my company, we have 3 software products that work against SQL Server, Oracle, and DB2 with the flip of a switch. We have built it using dynamic SQL within our code and all 3 have been around for years. These are big apps and, in the end, they are very maintainable.

Imagine trying to sell your product to a company's IT group and saying that it relies on stored procedures. Guess what...the DBA is going to shoot it down because he knows that as new releases come out, it is going to be a huge pain in the ass for them to update and maintain changes to the SP's. Now tell them that they don't have to do anything. All the SQL is managed in the code itself. Well, you know their reaction.

Maybe an in-house application where I know the back-end will always be SQL Server or Oracle or whatever, I would use SP's and love them. That's just not the case for a product-based application. At least in my experience it isn't.

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 10:19 AM by Frans Bouma
Marc: no not using commandbuilder:) Using a component you write yourself (or buy). You feed it the objects it should generate DML for and it generates that DML, including parameters. Execute that and you're set. Cache the result on the client if you will so you don't have to regenerate the statement. A dataset has the schema inside itself needed to generate the code you need. (I use the 'dataset' example, since Scott accused me of writing a blog to sell my O/R mapper LLBLGen Pro which is not the case at all :) ).

# Dynamisk SQL eller SP?

Tuesday, November 18, 2003 10:20 AM by TrackBack
I det seneste d

# Ever heard of role-based security?

Tuesday, November 18, 2003 10:20 AM by TrackBack

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 10:39 AM by Douglas Reilly
As far as Paul's comment about breaking client code by making changes to the stored procedures: This is no different than changing the rows a view returns as far as breaking things, and as for parameter changes, the best way to handle this is to add a parameter with a default value that works for everyplace the SP is called except the place that needs the new parameter. A good DBA does not break client code. A bad DBA will mess up any architecture.

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 10:45 AM by Mikey
Pre-compilation of a query plan does not exist, but that is not to say that plan re-use is not a performance benefit. 2nd and future executions of a stored proc will run faster (how much faster depends on your hardware).

A stored proc which gets the last name of a customer by customerid should outperform a straight execution of "select lastname from customer where customerid = 12345". But an external component that dynamically builds *AND PARAMETERIZES* a query (basically runs it through sp_executesql properly) should perform on par with the stored proc. I think that's a point people are missing when arguing against dynamic SQL.

Over-the-network performance benefits of passing "sp_Crap" instead of "sp_executesql 'SELECT crap'" are usually negligible these days with the fat network pipes.

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 10:45 AM by Marc Hoeppner
@Frans

Yepp, like I said, I was not trying to argue against the advantages of using something like ObjectSpaces ;) - But if you don't have that at hand, you are likely to hardcode your SQL code either into a SPROC or inside C# (or whatever) code. JW makes a good point though, that such a tool should be able to support both auto-generated SQL code as well as existing SPROCs as it simply is a requirement for some companies. Still, it doesn't change the general argument that we have here about the technical pros/cons of SPROCs. The business side is still something else to consider on top. On the other side, if you develop a product and deploy your own DB, I definitely want to make sure that the DBA _has no chance in hell_ to 'tweak'/'enhance'/ruin our SQL code ;)

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 11:37 AM by Joel
I think you need to address the comments about Round Trips. The biggest aspect of stored procs is that they live close to the data. So, if you are doing simple processing - sure. However, if you are doing complex processing, requiring multiphase transactions - interim result sets (changing logic and flow based on interim result sets) - I don't see why stored procs wouldn't be used. When you need to pass everything out of SQL - you are working on layer (the network layer) that is literally 1000's of times slower then memory. This isn't good. I don't know about apps that you write - but apps that I write tend to have very complex rule implementations - and data manipulation isn't confined to simple SQL statements. They may require many many many nexted transactions - sub-queries, multi-stage processing, etc.

I do agree, however, that sp's are misused for the wrong reasons with regard to performance, security, etc. But, in the real world (architecturally) they are a fact of life. If they didn't represent some level of goodness, why has Oracle been promiting Java in the db for years. Why are we so excited about having managed code live in Yukon? - its all about round trips and reducing network traffic as much as we can. Chatty apps are bad apps.

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 11:40 AM by Thomas Tomiczek
::If they didn't represent some level of
::goodness, why has Oracle been promiting Java
::in the db for years. Why are we so excited

Because Oracle was always the worst of all databases, from a SQL point of view. Their query analyzer literally sucked - all performance out of the server by being too stupid to see the most obvious things.

So, Java in the database was the way they "solved" this.

::about having managed code live in Yukon? -

Are we? Really? I am not.

::its all about round trips and reducing
::network traffic as much as we can. Chatty
::apps are bad apps.

Not necessarily. You can neutralize - pretty often - most of the impact with a good application server. Not always, though - and then you start hitting the last percentage of gains.

Again on the "Chatty apps are bad apps".

Why d you think a company like Persistence (http://www.persistence.com) has proimoted to be times faster than a SQL database for years? Because it is not always true what you say.

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 11:43 AM by Abdu
Some stored procedures are pretty complex and big in size. Having them as sql queries being resent by hundreds of clients is a network bottleneck. They also eliminate round trips. You can encapsulate all your SQLs in one call.

Some SQL statements span different databases across different servers (linked servers). This means these clients need to to have access to these servers.

How come your first LLBLGen used SPs only?

Abdu

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 11:48 AM by Frans Bouma
"How come your first LLBLGen used SPs only?"
I wrote that tool in a time when I was fully convinced stored procedures were much better, and way faster than dynamic sql. After I've hit the wall and learned that this is not the case, I gave up on stored procedures. That's why LLBLGen Pro generates all sql on the fly. It still can call sp's if you want to, but not for entity usage.

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 12:13 PM by Marc Hoeppner
@Joel

I don't think anyone is asking to drop SPROCs off the feature list. I totally agree that there are good reasons/cases when you should use SPROCs. The general argument started with Rob saying that you should use SPROCs always and everywhere. That's where many people including myself disagree. But that doens't mean that SPROCs are useless, quite the opposite.

Yukon solves many problems I/we have with SPROCs, for example versioning and multi-developer scenarios, let alone the whole deployment stuff. Still, I think that tools like ObjectSpaces, EntityBroker or the beloved LLBLGen have their merits even in the Yukon timeframe. Using parameterized queries still will keep the action where it should be (on the DB server using SQL) and the few extra bytes on the line surely don't make a real difference for most apps, at least IMHO.

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 12:39 PM by Rob Howard
> you should use SPROCs always and everywhere

Please don't misquote me. I did not say this and I clarified it further here:
http://weblogs.asp.net/rhoward/posts/38298.aspx

The main point that I am making is that you should take advantage of the platform you are running on. If there are platform specific features that you can use to better your application than you should take advantage of those features.

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 1:07 PM by Marc Hoeppner
@Rob

From your original post:
>At just about every talk I give I always try to make several consistent statements. One of which is: ‘Whenever possible use stored procedures to access your data’.

I think this statement is much to general in nature, so I don't feel I misquoted you saying 'with Rob saying that you should use SPROCs always and everywhere'.

# Stored Procedures vs. Dynamic SQL

Tuesday, November 18, 2003 1:19 PM by TrackBack

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 1:21 PM by Thomas Tomiczek
::>At just about every talk I give I always
::try to make several consistent statements.
::One of which is: ‘Whenever possible use
::stored procedures to access your data’.
::
::I think this statement is much to general in
::nature, so I don't feel I misquoted you
::saying 'with Rob saying that you should use
::SPROCs always and everywhere'.

I would say the original statement is cromoinally wrong.

See, "Whenever possible" means "also when it makes no sense". Even when you end up with a simple "select * from table where id = ?" in the SP, this would mean "use a SP, just because it is possible".

Basically, the statement means: use sp's for everything unless you use MS Access or another database which does not know SP's.

The quote from Frans (sorry, Rob) was right.

# Stored Procedures vs. Dynamic SQL

Tuesday, November 18, 2003 1:43 PM by TrackBack

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 2:19 PM by Paul Gielens
Use a stored procedure if the roundtrip savings are worth the decrease of maintainability, flexibility and compatibility. We tend to call this "the zone". "The zone" where business logic is factored tighter and tighter to your db scheme. Besides the people who wrote OR mapping tools probably compared execution plans (SQL server) and must have noticed dynamic SQL is way faster due to SQL server's crappy stored proc optimisation when precompiling.

# re: Stored procedures are bad, m'kay?

Tuesday, November 18, 2003 3:11 PM by Harley Jácome
I Think that after eight years of keeping stored procedures you become tired of them and you'd rather prefer your comfort than a well designed application.

Rob's got a point on it

# re: Stored procedures are bad, m'kay?

Wednesday, November 19, 2003 4:39 AM by Mike
I'm surprised that noone has mentioned the merits of using SProcs in a secure environment yet. For those DB's where complete access security defines the method of data access, SProcs are really the only way to go.

Say for example I have a DB using Windows Auth to restrict who can view what data. The DB is being accessed by three or four different apps. Now on that DB I have something like 100 tables, which I do NOT want the casual browser (using Query Analyser) to be able to view. I therefore need to lock down access to all tables. Access MUST then be made through SProcs. I know - I could just allow access to the tables through defined logins. But what if I need two different roles (Staff vs. Managers - defined by NT Domain groups) to be able to retrieve different sets of data from the same tables? And what if the access levels that particular users have are to changed? For example - a Manager can only view payslips for those employees that work directly for him instead of the whole department? That would require the code of three or four applications to be changed. I'd rather change one set of SProcs...

The point I'm trying to make is that if you are developing an application in which any kind of sensitive/personal data is involved, or where Role-based access to data is necessary, or you are required to ensure that this data is kept secure - Dynamic SQL will not be your best friend. In these instances only SProcs will help. In fact I'd go to say that if you are designing/developing with security in mind from the start, then you'd be daft not to use the in-built security that SProcs offer you.

# re: Stored procedures are bad, m'kay?

Wednesday, November 19, 2003 4:49 AM by Frans Bouma
Mike: the time it takes to create all those stored procedures for each role can also be used to create the views you want. The advantage of that is that you can use views in queries (FROM clauses) you can't do that with sprocs.

People think that in a high-secure environment, stored procedures will be much more secure AND it will take way less effort. This is not true: for each byte you want to return as a select result, you have to write a procedure. That code can also be used to write a view.

# re: Stored procedures are bad, m'kay?

Wednesday, November 19, 2003 5:15 AM by Frederik Gheysels
What about writing your business logic in a stored procedure?

# re: Stored procedures are bad, m'kay?

Wednesday, November 19, 2003 5:59 AM by Crazy Chess Player
What about user defined function which return tables (sql 2000) (view with parametars).
Should we use it Frans,
or we should buy your LLBLGEN Pro.

# re: Stored procedures are bad, m'kay?

Wednesday, November 19, 2003 6:02 AM by Frans Bouma
Depends on what you want to do with the user defined functions. afaik, you can't call them from outside the db.

# re: Stored procedures are bad, m'kay?

Wednesday, November 19, 2003 6:03 AM by Thomas Tomiczek
::What about writing your business logic in a
::stored procedure?

Perfectly valid approach.

Just dont tell people then that you follow object oriented programming - you are simply not.

# re: Stored procedures are bad, m'kay?

Wednesday, November 19, 2003 6:21 AM by Crazy Chess Player
> afaik, you can't call them from outside the db.
I don't think so.
http://msdn.microsoft.com/msdnmag/issues/03/11/datapoints/

# re: Stored procedures are bad, m'kay?

Wednesday, November 19, 2003 6:34 AM by Frans Bouma
Chess Player: I meant calling them as a stored proc directly using a Command object, afaik, you can't do that, it always requires a T-SQL statement which references the function (calling it). Of course you can call them embedded in an SQL statement, like the article shows. (the article is not that correct though, it says stored procedures are compiled and views aren't. Well, the code of a view is placed at the spot where the view is referenced. This means that a stored proc using a view contains in its execution plan the compiled code of the view. At least that's what BOL tells me.)

# re: Stored procedures are bad, m'kay?

Wednesday, November 19, 2003 6:34 AM by Frederik Gheysels
>Perfectly valid approach.

>Just dont tell people then that you follow object oriented programming - you are simply not.

Sometimes, you have to make trade-offs between perfectly valid OO and performance.

# re: Stored procedures are bad, m'kay?

Wednesday, November 19, 2003 6:43 AM by Thomas Tomiczek
::Sometimes, you have to make trade-offs
::between perfectly valid OO and performance.

Yes, but these are fwwer than you think.

Becaue the one thing totally ignored so far is that a good OO DAL would introduce a nice little cachin opportiunity, too :-)

AND: the performance tradeoff is only a valid argument when necessary. Otherwise you just blow out the maintainiability of the app for a performance gain you dont use. BAD decision.

But sometimes, for certain simple procedures, it really is good to put them into an SP.

# re: Stored procedures are bad, m'kay?

Wednesday, November 19, 2003 6:55 AM by Wallym
:Frans Bouma
:Posted @ 11/18/2003 2:20 PM
:Wallym: the dramatic performance boost is not
:there, because the stored procs are threated
:as queries which arrive at the sql engine:
:they are compiled at runtime.

Frans, I respectfully disagree. My experience has been that sprocs do provide a dramatic performance increase. The issue is when is this performance boost needed vs. ease of programming.

Thomas Tomiczek, you sound like a ranting child. I stand by my statements and the standards that I use.

Wally

# re: Stored procedures are bad, m'kay?

Wednesday, November 19, 2003 7:01 AM by Frans Bouma
"Sometimes, you have to make trade-offs between perfectly valid OO and performance."
Placing BL in de stored procs has nothing to do with OO or not, it has everything to do with separation of functional tiers. Moving BL into the procs is colliding everything together. This was done in the old days too, where queries were executed in a button handler. Worked faster, but was unmaintainable.

# re: Stored procedures are bad, m'kay?

Wednesday, November 19, 2003 7:04 AM by Frans Bouma
"My experience has been that sprocs do provide a dramatic performance increase. The issue is when is this performance boost needed vs. ease of programming. "
While I most of the time agree with your opinions, I have to say this opinion of yours is just what it is: your opinion, not based on fact, just on personal experience. When I look at the theory behind the sql compiler in sqlserver, I can't conclude anything other than that a dyn. parametrized query and a stored proc run as fast, because both will use a cached execution plan. (yes, dyn. query has to be compiled first, so does the proc, which also will have to be recompiled if you're not careful (and the more code you add to make them flexible the more risk you take to cause a recompile of a stored proc on every occasion)

# Stored Procs or Dymanic SQL

Wednesday, November 19, 2003 7:06 AM by TrackBack
So yesterday a debate surfaced that seemed to have the entire online programming community all worked up. Rob Howard, Microsoft ASP.NET Program Manager, posted to his blog about using stored procedures in SQL server. Many comments both for and against Rob's arguments in his post ensued. Things got a little heated when Frans Bouma stepped into the debate. Frans took his ideas to his own blog, and then you see the entire blogging community step in (via their own respective blogs) to add their own take on things. What a day.

# re: Stored procedures are bad, m'kay?

Wednesday, November 19, 2003 7:41 AM by Thomas Tomiczek
::Thomas Tomiczek, you sound like a ranting
::child. I stand by my statements and the
::standards that I use.

This is ok. It does not make your stnadards any moe meningfull, though. And this is what you should care about more, you know. Especially given the number of arguments you give in here.

@Frans:
::yes, dyn. query has to be compiled first, so
::does the proc, which also will have to be
::recompiled if you're not careful (and the
::more code you add to make them flexible the
::more risk you take to cause a recompile of a
::stored proc on every occasion

Even worse. You end up ith having a "with recompile" option on the SP pretty fast. Because all these neat tricks for handling variable numbers of parameters end up killing your performance. The cached plan will be the one selected by the first set of parameters discovered. All other requests goind in will reuse the compiled execution plan, whether this makes sense or not. This can only be avoided when you dont work with "dynamic numbers of parameters".

What I mean are sp's like this:

getUserData (fitlerName, filterCountry)

where both could be null. Depending on the selection you end up with either one or two or zero where conditions.

In a SP you can:
* Make a series of IF statements and HAVE threee statements. Efficient, but ugly as hell.

* Make one statement that uses conditions. Way less code and pretty nice - but basically the cached execution plan is determined by the first set of parameters.

Rsult: With option Recompile, and there you say then "whow, I did reuse plans", becuase you basically had to kill your performance gains.

Alternatives: three different SP's - not better than avariant one, and ugly as hell.

With dynamic SQL the SQL generator can handle this on the client side.

The main problem ith SP's here is that I know a lot of occasions where this dynamic thing turns around and bites you faster than you can say "I was an idiot programming this", and this is basically whenever you show a powerfull query form to the user. One where the user may be able to select multiple conditions. One like, btw, the "Advanced Find" in Outlook (on the Advanced tab, btw.). I would basically say it is nearly impossible to code someting like this in an efficient set of SP's on the database - the most efficient way to do this IS dynamic SQL, as the query is dynamic.

So, as a summary: SP's bite you when you go dynamic in the application. Now, it is up to you to decide to write applications that empower the user big enough that you realize you just got killed by sp's. Naturlly we all do this, right? We all make configurable software, using command patterns etc. Right?

# re: Stored procedures are bad, m'kay?

Wednesday, November 19, 2003 7:58 AM by Frederik Gheysels
>>yes, dyn. query has to be compiled first, so does the proc

What's the use of the 'WITH RECOMPILE' clause then the 'CREATE PROCEDURE' in Sql Server ?
I also thought that you could recompile a SP in Sql Server explicitly, so why would the SP be recompiled every time it's called?

/me needs to do some investigation on that subject.

# re: Stored procedures are bad, m'kay?

Wednesday, November 19, 2003 8:05 AM by Frans Bouma
Frederik: WITH RECOMPILE means the proc will be recompiled no matter what on each access: (From BOL) "Creating a stored procedure that specifies the WITH RECOMPILE option in its definition indicates that SQL Server does not cache a plan for this stored procedure; the stored procedure is recompiled each time it is executed"

It can be better to signal sqlserver to not bother to cache the plan and to lookup the cached plan only to find out it has to recompile the procedure anyway. There are situations where a stored procedure will be recompiled anyway because of different codeblocks being executed, temp table usage in IF statements etc.

# re: Stored procedures are bad, m'kay?

Wednesday, November 19, 2003 8:16 AM by Kingsley Idehen
You may call this "Product Pimping" (which it isn't, I can only point you to relevant technology based on the content of your posts when such exists), but if you want to back up your observations with empirical data (there are a number of critical variables that affect the claims that you are making either way). Stored Procedures and Dynamic SQL aren't mutually exclusive, they can actually be combined in appropriate situations. simply obtain the Open Source ODBC Benchmark Utility for ODBC or JDBC that we provide from http://www.openlinksw.com/download that pretty much covers all the relevant scenarios. If ODBC or JDBC are in the picture and escape syntax is understood and appreciated, then post utilization of the ODBC and JDBC bench tools you will see that Stored Procedures are a network optimization (reducing RPC count) primarily.

# re: Stored procedures are bad, m'kay?

Wednesday, November 19, 2003 8:23 AM by Frans Bouma
What's so interesting of benchmarking something over ODBC? What's reality for ODBC doesn't have to be reality for native ADO.NET providers. Example: ADO over ODBC doesn't call sp_executeSQL per se when you execute a dynamic statement, SqlServer's client for ADO.NET does.

# re: Stored procedures are bad, m'kay?

Wednesday, November 19, 2003 8:25 AM by Crazy Chess Player
Frans ,
You are right about calling
but you can wrap it in sp
and call sp :).
Another usefull article.
http://www.fawcette.com/vsm/2003_09/magazine/columns/databasedesign/default_pf.aspx

What is important for me :
1.don't use concat for making sql on client
2.there is not perf diff in using SP
and sql with params for SQL 7 >>
(you can see that if you compare Pet Shop .NET
last one is done without sql proc )
3.May benfit from OR maping tools is developer productivity ?
(Prove it! for example you can make
Database Layer
Pet Shop .NET with your tool)
and compare number of lines and developer effort.Like M$ has done against Java$.
4.Visual studio .Net is great tool not only
for .NET language but also for working with
MS SQL SP.
5.In my oppinion you must know database
(PL-SQL ,Transact SQL) if you are making
database aplication against Oracle or SQL
6.I did not use OR maping because
I know SQL very well, but if it can save me some time why not?

# re: Stored procedures are bad, m'kay?

Wednesday, November 19, 2003 8:38 AM by Frans Bouma
ChessPlayer:
"1.don't use concat for making sql on client"
Of course not :) I use string builder objects and in some occasions String.Format() (which is also very efficient). I also use AppendFormat() to add as much text as possible in one go.

"3.May benfit from OR maping tools is developer productivity ?
(Prove it! for example you can make
Database Layer Pet Shop .NET with your tool)
and compare number of lines and developer effort.Like M$ has done against Java$."
It took me some time to get the correct petshop database model :) (MS' one is not that great). It's the plan do write teh petshop example, I hope to finish it soon.
"4.Visual studio .Net is great tool not only
for .NET language but also for working with
MS SQL SP."
You gotta be kidding :) Did you ever wrote a SP in vs.net and had a typo? :) "Error", err... yes, but where? :D

"5.In my oppinion you must know database
(PL-SQL ,Transact SQL) if you are making
database aplication against Oracle or SQL"
No. With an O/R mapper this is totally abstracted away. The only think that is very handy to have is a relation graph, thus which entities are related to which entities. But you can print that using enterprise manager.

# re: Stored procedures are bad, m'kay?

Wednesday, November 19, 2003 8:58 AM by Crazy Chess Player
"4.Visual studio .Net is great tool not only
for .NET language but also for working with
MS SQL SP."
I even debug it in Visual studio .Net
5. I think your answer is main reason why
lot of database app fail.
one more link from oracle database guru
author of
"Expert One on One Oracle "
by Thomas Kyte (Author)
http://www.databasejournal.com/features/oracle/article.php/10893_1403591_2
I will quote him
"If you do not understand what your particular database does or how it does it, your application will fail. If you assume that because your application ran fine on SQL Server, it will necessarily run fine on Oracle then, again, your application is likely to fail."

# re: Stored procedures are bad, m'kay?

Wednesday, November 19, 2003 9:05 AM by Frans Bouma
That quote is based on the assumption Oracle supports as much SQL-92 standard statements as SqlServer does (and vice versa). Both have proprietry statements to do stuff (8i can't join ANSI style, 8i/9i don't have FROM clauses in delete/update etc. (delete has 1 from, not 2)...). This obviously will make an app fail.

However I generate SQL on the fly using components that are specialized to do so per database. Thus 1 for sqlserver, one for oracle etc. The code targeting these objects is the SAME (which is the code a developer would write), the sql generated at runtime differs, because the engine used to generate it is different for oracle than for sqlserver. Using the same engine is indeed not handy. :)

# re: Roundtrips and the real bottlenecks

Wednesday, November 19, 2003 9:05 AM by denny
round trips and sql and optimal design:
IMHO....

any design that has the "model" of a conversation (talker,listener and so on)
can have this design issue and should be examined with the same basic logic, adpated to the details of what is implimented.
you can swap sql "round trip" issues with HTTP exchanges, trips in a car and other cases of data exchange.


it all comes back to :
1) how much traffic (total bytes,people,cars etc)
2) over what time range (clock cycles, minutes, days etc)
3) what is the "Latency" induced per trip
( time taken to get there and back + time spent on avg at "there" )

an example is some of the talk about how a "chatty" web service is often a poor design when running over http, to many small messages
sucking up time and bandwidth.

so if you are going to need one data item say per hour then the "tound trip" time is small and not critical.

but if you need say 50 data points every say 1/10'th of a second then fetching them one-at-a-time means that the latency will start to be larger than the actual data you get ....
so then it's time to move to a model where you get back a number of data points in a batch.

based on that plus the 3 items above I think one can start to build a general model for when to look at trip time as the issue to optimize Vs. time spent waiting at one end or the other for the data
0. the client
1. send request
2. server processing time
3. send reply
4. the client has data
if 0 and 4 are not significant issues then 1-3 each should be tested for how much they add to the total trip time.
make them each small and as close to the same as you can when trip time is a problem.

thats my view anyway.

# re: Stored procedures are bad, m'kay?

Wednesday, November 19, 2003 9:25 AM by Crazy Chess Player
Sorry but I agree with him.
One more quote:
"These may seem like surprisingly obvious statements, but in my experience, I have found that too many people approach the database as if it were a 'black box' — something that they don't need to know about. Maybe they have a SQL generator that will save them from the hardship of having to learn SQL. Maybe they figure they will just use it like a flat file and do 'keyed reads'. Whatever they figure, I can tell you that thinking along these lines is most certainly misguided; you simply cannot get away with not understanding the database. This chapter will discuss why you need to know about the database, specifically why you need to understand:"

Remerber EJB and all that object mapping staff
(Top Link)
for java and database.
Good Luck!!
But I don't belive in that:
"No. With an O/R mapper this is totally abstracted away. The only think that is very handy to have is a relation graph, thus which entities are related to which entities. But you can print that using enterprise manager."

# re: Stored procedures are bad, m'kay?

Wednesday, November 19, 2003 9:34 AM by Frans Bouma
You don't believe me? That's fine. I don't see the point in learning SQL when you are not using it at all. The definitions (very important) of what people want are the same for every database. the SQL generated is different.

It's like claiming knowledge of MSIL is a must have to be able to write C# succesfully, or to understand how NTFS works to be able to use the I/O subsystem via System.IO.

# re: Stored procedures are bad, m'kay?

Wednesday, November 19, 2003 10:07 AM by Crazy Chess Player
Don't be angry ;).
Let say it this way: Set of SQL generated by your tool is probably subset of what I already generated manually in my stored procedures or sql statements with parameters.
I bet that your tool would not solve some practical problem that I solved with sql.
If the developer uses your tool and does not know SQL in my opinion he ( or she) will sooner or later has unsolvable problem that require SQL.
In my opinion everything you can do in IL you can do in C#, which is not true for OR mapping tools.
C# = IL
SQL > LLBLGen Pro



# re: Stored procedures are bad, m'kay?

Wednesday, November 19, 2003 10:14 AM by Frans Bouma
Well, for DML, not really. For special selects, I agree, you can never mimic RDBMS native functions well enough, however dyn sql engines can get very close. It depends on what you need and besides aggregates, you don't need a lot of specific SQL statements a lot in a *LOT* of situations. for the rare situation that you do, you can fall back on creating a view or indeed a stored proc, but these situations are rare.

# re: Roundtrips and the real bottlenecks

Wednesday, November 19, 2003 10:28 AM by Jimmy Nilsson
Hi Frans,

Typical, I'm away at a conference for one day and you start such an interesting discussion which I now enter so late.
:-)

I have to confess that I haven't had time to read up on all the comments from yesterday, so with the risk of repeating what have already been said, here's a couple of comments.

Something I'm worried about is to have long transactions and one way of shorten them, is to reduce the number of roundtrips within them.

Another thing is that I like to use stored procedures for persistence logic, especially the CUD part of CRUD. An example of this is if one class is split over several tables.

I guess the only answer here is as usual that "it depends". Words like "always" or "never" always - I mean often<g> - triggers an alarm with me.
:-)

Best Regards,
Jimmy
###

# re: Stored procedures are bad, m'kay?

Wednesday, November 19, 2003 11:00 AM by Rob Howard
Be sure and read my replies after researching with the SQL team and several outside SQL exeperts:
http://weblogs.asp.net/rhoward/posts/38446.aspx

# re: Roundtrips and the real bottlenecks

Wednesday, November 19, 2003 11:12 AM by Frans Bouma
Hey Jimmy! :) (totally forgot to reply your mail, will do that a.s.a.p, tomorrow I think)

the CUD procs should be written by hand then, to have full control over how they're working, and when the schema changes, how to update them. Not a great solution, IMHO :)

# re: Roundtrips and the real bottlenecks

Wednesday, November 19, 2003 11:17 AM by Jimmy Nilsson
Or you could re-generate the sprocs after having changed the mapping information in some metadata.

Best Regards,
Jimmy
###

# re: Roundtrips and the real bottlenecks

Wednesday, November 19, 2003 11:22 AM by peter
I agree with you.

That said, using an O/R mapper with just lazy loading seems to be the worst possible case for roundtrips...

# re: Roundtrips and the real bottlenecks

Wednesday, November 19, 2003 2:54 PM by Scott Prugh
There are some other reasons you would want to definitely minimize round-trips. It has to do with CPU load on the database server. The DB server is a shared resource(and a very precious one) so you definitely want to minimize the number of calls. Chatty DA layers can be a big drain on DB CPU during heavy load. In our system we have 1000's of concurrent users. We had to do a lot of optimizations to reduce DB roundtrips. For example, when there is a shift change, hundreds of call center reps sign on at the same time. This code path had to be tuned heavily to not pound the database. Much of the tuning involved pushing the data access code into stored procedures and getting much of it in one hit. Even though we returned the same data, we were able to cut CPU utilization by over half.

-Scott

sprughattelutiondotcom

# re: Stored procedures are bad, m'kay?

Thursday, November 20, 2003 6:24 AM by Mikkel R
Being quite fond of stored procedures myself, it's been a real treat to read this blog-entry and the following discussion to get some input.

I don't believe there is only one correct way to do things, nothing is just black or white. Different problems require different solutions, and only the specific scenario decides which is better: dynamic sql or stored procedures or perhaps a mix.

That said, I'll provide you (all) with a little more input to shoot at :-)

Firstly, why hasn't anybody produced comparative benchmarks? How can you argue that dynamic sql should be just as fast as stored procedures with no data to back it up - or the other way around for that matter. Books online is a great source for information, but is it absolute truth? (I won't either, btw)

Regarding the use for sprocs, it's true that if you don't write your stored procedures correctly, you may as well use dynamic sql statements. But I think this is because of a common misconception. Procedures are not a place to put business logic and as such there should be no need for conditionals, behavioural bits and the like, and therefore no need for recompilation. If you can't manage without them, your design must be wrong somehow. (Yes, I'm sure there are tons of counter-examples, but in general...)

As for O/R-mappers, my experience is that they're not very good at handling complex relationships, and if you have to write the code that generate the SQL yourself, you may as well put the statements as procedures in the database and write a wrapper (or use someone else's - ie. Microsoft.ApplicationBlocks.Data for .net). Oh, and you can use dynamic discovery of sp-parameters the same way you dynamically discover changes to a table.

In my opinion, the best argument against stored procedures is the "maintainability"-issue. 4+ sp pr. table/object and corresponding wrappers can get hairy to maintain and is a huge source of errors. However, the strength of the approach is that you can test the persistence part of the application systematically - this is a little tricky with generated code. If you find an error, replacement is a matter of rewriting (and testing!) a few lines of code. I guess testability and maintainability have some sort of trade-off relationship, that need to be taken into account when planning the project.

There, my 2 cents
Mikkel

# re: Roundtrips and the real bottlenecks

Thursday, November 20, 2003 2:23 PM by Rolly Ferolino
For those people who worries about the GUI being tightly coupled with the DAL layer, you can design your system to talk to another layer (DataProvider), whose job is only to batch the dynamic SQL and provide interfaces to the controls in the GUI layer. GUI -> (BAL) -> DataProvider -> DAL -> DB.

# Now this really bugs me...

Saturday, November 22, 2003 1:16 AM by TrackBack

# Frans - u r so wrong

Saturday, November 22, 2003 3:45 AM by Ricky Datta
sprocs are the way to go.

1. It is a packaging issue - I do not want my
sql code to be buried in all C# source files
all over.

2. I can test them and sql optimize them as batches.

3. Read up on the 'compilation' stuff - you have it wrong.

Plug - My tool (www.dbcodegen.com ) generates
generates C# bindings for sprocs as well.

Ricky

# re: Stored procedures are bad, m'kay?

Saturday, November 22, 2003 7:25 AM by Thomas Tomiczek
::1. It is a packaging issue - I do not want
::my sql code to be buried in all C# source
::files all over.

With all respect: if you are too stupid tp keep your SQL - even if you use handcoded dynamic SQL - in one place, you should not program but sell fries at burger king. SP's or not have NOTHING to do about keeping SQL in one place. Even SP's need to be called, and when you scatter these calls all over your code, your architecture is as rotten as the sample you gave.

You can ALSWAYS centralize this. SP or not.

::2. I can test them and sql optimize them as
::batches.

Yes, and you can do so all over the place over and over and over and over again, for multiple databases if you want to support more than SQL Server.

Sometimes this is needed. Normally it is the typr of timewaster that makes you loose your job as your company is not competitive enough.

the vast majority of db operations are simple and extremely boring. Linear CRUD operations. The majority of the rest are complex queries. In both cases, SP's dont gain too much.

Unless you start moving business logic INTO the database. THEN you can gain tremendously in some scenarios, but this is an architecutral decision. Just say goodbye to OO.

::In my opinion, the best argument against
::stored procedures is the "maintainability"-
::issue. 4+ sp pr. table/object and
::corresponding wrappers can get hairy to
::maintain and is a huge source of errors.

Absolutly.

::However, the strength of the approach is
::that you can test the persistence part of
::the application systematically - this is a
::little tricky with generated code.

No, it is simply not necessary in generated code. The code generator will not emit buggy code. Period. A good one will even validate that the generated code is working (I work on something like this for our EntityBroker O/R mapper right now - it will go through the database and make sureit's metadata is correct).

So, there simply is way less need to validate anything.

Naturally this is only the case when you get this layer automated, not when you belong to the vast amount of people considering it smart to handlcode the same reetitive routine over and over and over again.

# re: Stored procedures are bad, m'kay?

Saturday, November 22, 2003 11:50 AM by Eli Robillard
The too-many-cooks argument against sprocs was valid at one time, but code generation now negates it for most cases.

I use CodeSmith to generate sprocs and DAL classes against tables and it not only makes the job cake, it makes coding against the tables (via the classes) trivial. I shaved at least a week worth of manual code on my last project this way. It took all of two minutes to adjust the templates on this page to suit my needs (to use the connection defined in web.config): http://www.ericjsmith.net/codesmith/forum/?f=9&m=402

The DBA needs to change the structure? Regenerate the sprocs and code, recompile the classes in the DAL namespace. Done. The only code that needs to be touched is code that needs to change anyway. But now all my DAL interfaces are consistent, easy to work with, and provide more functionality than if I had to hand-code each.

Code generation against individual tables means that I use additional queries to translate ID codes into English onscreen (or to do .resx lookups for other languages) -- usually these are the same datasets used for the dropdown lists themselves. And these can all be cached. So I get the advantage of both fewer and leaner queries hitting SQL Server for both my dynamic and static data. The translation happens at the UI layer where it belongs.

I still generate a few specialized relational queries on the fly for certain reports. There will always be exceptions, they can't be avoided. But this approach saves me time in all the usual cases, cutting the time I spend writing repetitive code down to nearly nil.

As for performance, sprocs are faster. I've done time trials. Have you?

Take care,
Eli.

# re: Roundtrips and the real bottlenecks

Saturday, November 22, 2003 12:10 PM by Eli Robillard
> when for example a webform requests 3 or 4
> batches of data to build the webform's
> content, are these requests bundled into 1
> call?

No, but they should certainly be cached, preventing unnecessary roundtrips. Reasonable use of caches for lookup data seems to make the "Ah, you can't?" paragraph irrelevant.

I'm curious where you recommend lookup data be retrieved -- in chunkier queries or in multiple queries? You seem to be suggesting multiple queries (i.e. keep 'em separate from the DAL) but aren't you caching this data? Why suggest that people accept these round trips as a compromise?

Another question: How many BLObs do you store in databases? Perhaps your needs are different from mine, but whenever possible I (and I thought most folks) keep graphics and OLE-ish objects out of the db and instead store links to the file system; the FS is designed for variable-length data, databases do better with fixed-lengths. Just curious.

Thanks for stirring the pot, it's always healthy to question the standard answers.

Take care,
Eli.

# re: Roundtrips and the real bottlenecks

Saturday, November 22, 2003 12:24 PM by Frans Bouma
I retrieve lookup data which is not changing a lot at application startup and cache it, in for example the Application object in ASP.NET

Blob retrieval from a db is not slower than from a FS, in fact, the FS in a database is perhaps faster, because it is optimized for data-retrieval. Having blobs in the database can be handy because they get backupped in one go with the database. Also, when you store links to a file instead of the file, the file can be removed/renamed, without violating a constraint. This can hurt your application.

# re: Stored procedures are bad, m'kay?

Saturday, November 22, 2003 12:30 PM by Frans Bouma
"3. Read up on the 'compilation' stuff - you have it wrong."
Which part of "Quote" do you not understand? I quoted the part from the BOL. If you think that text is wrong, BOL is wrong, not me.

"As for performance, sprocs are faster. I've done time trials. Have you? "
Yes I have, see the links at the top. SProcs are slower in fact in my tests.

However 'in my tests, ABC is faster' is bogus to me when there is no explanation given. BOL tells me SProcs and dyn. queries are not treated differently. Therefore one should be as fast as the other. You may think sprocs are faster, if you can't give a theoretic explanation that is TRUE, don't bother claiming they're faster.

Code generation for stored procs is ok, but then also maintenance sucks: you end up with a lot of procs and when the schema changes, which one to remove? All of them? None? Trust me, with LLBLGen 1.x, which generates procs and classes way before Eric Smith thought it was a good idea, I've learned this the hard way: a hell of a lot of procs, all nice, but unmaintainable.

# re: VB.NET developers, continued

Saturday, November 22, 2003 5:39 PM by ChrisL
Can't post to paul's site as it is broken, so I will post here ;-)

If C# has the menu why not VB - Consistency

Keep Refactoring - That is what it is and thats what we VB developers call it!

Why should "professional" VB developers get any less/different IDE features than C# (and visa-versa ;-)

Are we going to become/thought of as 2nd class citizens again.

Is this all related to the efforts to make VB easier for the "occupational programmer"
http://www.fawcette.com/vsm/2003_12/online/meader/default_pf.aspx
<snip>
Ari Bixhorn: People call these programmers different things, from hobbyist programmers to non-professional programmers, but I think
occupational programmer describes this class of person more accurately. For example, think of the accountant who needs to use a little bit of VB to build a front end to an Access database. We're doing a lot of work in this area in VS.NET, but particularly in VB.NET. What we want to do is put the magic back into the product, to satisfy the needs of all the different developer communities.
<snip>
One step forward, one step back

Check out http://www.xtreme-simplicity.net/
PS The VB message has been there for a lonnnng time ;-(

# Does an OR Mapper need to use dynamic sql?

Sunday, November 23, 2003 8:20 PM by TrackBack

# Dynamic Queries vs. Stored Procedures

Monday, November 24, 2003 9:58 AM by TrackBack

# re: Stored procedures are bad, m'kay?

Tuesday, December 02, 2003 7:23 PM by Stoyan Damov
Yet another religious war:( I'm sick of it!

Don't you guys get it? I'm sure you won't until you read a book like "The design and evolution of C++". You can't just say "Sprocs SUCK, long live SQL" (a guy actually said that:). You can't also just say "SQL sucks, long live sprocs!". It's all about using the one or the other when it is most suitable. If Bjarne had the "C sucks, long live Simula" mindset, C++ would NEVER be the MOST successful language! You want lean and mean near-the-iron code -- use the C subset of C++. Should you want to build an enormous higher level solution FASTER than using plain "old":) C, use the OO features of C++. You want to update 10 tables with one network trip -- use sprocs. You want to build a generic O/R mapper because you're reimplementing it ALWAYS anyway -- use dynamic SQL. What the @#$% is the problem with you guys, huh?

P.S. To calm you down a bit:
I like sprocs, and I like dynamic SQL. I hate sprocs and I hate dynamic SQL. In fact, I hate doing any DB-related work so don't sue me:)

P.S. to the O/R mappers guys here: Don't try to advertise your O/R mappers in such a stupid way:)

Cheers,
Stoyan

# re: Stored procedures are bad, m'kay?

Wednesday, December 03, 2003 1:45 AM by Stoyan Damov
This one is for the sproc guys:

Are you ALWAYS the one deciding which database will be used? Isn't that again your company and your client's company politics? If the customer chooses MySQL (or Access) exactly what kind of sproc will you write?

This is for the O/R mapper guys:

Excuse me guys, but your O/R mappers can serve a maximum of 70% of the line-of-business applications that need to be build. I know it's OK for your companies and you could live with that, but the rest of us are building applications that are orders of magnitude more complex than Northwind & pubs, and more often than not, a generic solution is not a solution at all.

What happens if your O/R mapper should support Access, SQL Server and Oracle? I'd rather use/invent a pattern which allows me to write specific code for each DB (but to have the same code in the BL) than use a generic solution. For example, if I have to insert N rows in a single query, I'd use Oracle's arrays, SQL Server's XML support and a good old "for" loop for Access. What about that? What about if I have to cache data? What about if I have to perform virtual locks on the data (even with the disconnected ADO.NET)?

Cheers,
Stoyan

# re: Stored procedures are bad, m'kay?

Wednesday, December 03, 2003 2:43 PM by Bill Priess
Wow, the more I read about this... the more I just want to use object serialization and keep my data with my object and forgo the db altogether... ;)

@Stoyan: Agreed, use of SPROCs or DynSQL really depends on the situation at hand.

# re: Is it still allowed to have critisizm on Microsoft here?

Saturday, December 06, 2003 9:40 AM by Martin Spedding
Hi Frans,

exactly my feelings and that is why I moved my blog (http://weblogs.asp.net/mspedding) to http://www.mjs-solutions.com/mjsthoughts

Also I wanted to have freedom to be able to express my thoughts and provide constructive criticism as well as to write about other subjects.

I think you will not be the last to move. Sadly it is possible that weblogs.asp.net will simply become blogs.gotdotnet.com

Martin

# re: Is it still allowed to have critisizm on Microsoft here?

Saturday, December 06, 2003 9:49 AM by Paul Gielens
Company A, company B who cares...? Microsoft sux Linux rules or was it the other way around ;) I don’t see why (considering you have valid arguments) posting something anti-Microsoft wouldn’t get accepted in this community. The flipside is we receive good .NET related information from these guys and that is exactly the target Scott is aiming for.

# re: Is it still allowed to have critcism on Microsoft here?

Saturday, December 06, 2003 9:59 AM by Frans Bouma
Paul, it's not that MS guys shouldn't be here, it's that with all the blog material expressed HERE, it looks like there are only positive things to blog about, when it comes to Microsoft's material. I don't think it is appropriate to babble about something that's not so good when the rest is just venting what corporate policies dictate them. (look at the recent new postings... sign up for Microsoft seminar bla etc..)

# re: Is it still allowed to have criticism on Microsoft here?

Saturday, December 06, 2003 10:06 AM by Paul Gielens
I forgot to mention I normally skip the main feed to dis lead my eyes from the pro-Microsoft, Interscape Technologies etc writings.

# re: Is it still allowed to have criticism on Microsoft here?

Saturday, December 06, 2003 10:08 AM by matthew
I will repeat what I said elsewhere. This was always a Microsoft site. If you don't like it, set up your own. I think it's good for Microsoft people to be here, as it increases the content and number of knowledgable people here.

And more good content means more people reading. And re the Microsoft criticism, even Scoble criticises Microsoft and he works there!

Just FYI

Registrant:
Microsoft Corporation (ASP67-DOM)
One Microsoft Way
Redmond, WA 98052-6399
US

Domain Name: ASP.NET

Administrative Contact:
Gudmundson, Carolyn (GPIIZCVTVI) domains@microsoft.com
One Microsoft Way
Redmond, WA 98052
US
(425) 882-8080 fax: (425) 936-7329
Technical Contact:
MICROSOFT CORPORATION (EPMKOEAUSO) msnhst@MICROSOFT.COM
One Microsoft Way
Redmond, WA 98052
US
425 882 8080 fax: 206 703 2641

What's new?

# re: Is it still allowed to have criticism on Microsoft here?

Saturday, December 06, 2003 10:14 AM by Frans Bouma
Matthew, my blog was here when scott's site was elsewere. Then we migrated to asp.net, something that gave me mixed feelings, but alas.. Now this.

What scoble does, is his choice. I simply don't feel comfortable that I criticize the host of the criticism.

There is a lot of heat and tough debates ahead of us, especially in O/R mapper land related to Objectspaces and MS attempt to kill all O/R mapper vendors. It's sad that this cool blogspace is now also the heart of MS' own blogging: it's like preaching about some christian god in a synagoge.

# re: Is it still allowed to have criticism on Microsoft here?

Saturday, December 06, 2003 10:14 AM by Brad More
I see no censorship here. On the contrary, I see reasoned criticism all the time, just not obvious anti MS zealotry, although the only prohibition against that is that this sights charter is about .Net, so it might be off topic. If you decide that you want to blog on more personal topics, than you should probably move ... if you want to conduct educated discussion, including criticism, of .Net related topics (and endure occassional and annoying plugs for interscape) then stick around. THIS IS where that criticism will be seen and read by the right folks ....

# re: Is it still allowed to have criticism on Microsoft here?

Saturday, December 06, 2003 10:29 AM by Paul Wilson
I've never once seen any attempt by MS to censure criticism or debate -- if anything I've seen the exact opposite. I've had opportunities to take the "red pill" and join MS -- and I've clearly stated some anti-MS things in my interviews and dealings with MS. I would move my blog in a second if I wanted to be seen as a Linux/Java developer, but I am mostly a MS developer, so it makes perfect sense to be part of their community. But that doesn't mean I always agree with them, nor do I always state the party line. On the contrary, you're criticisms of MS will be even more read by the right people if you stay here, so please do NOT move.

# re: Is it still allowed to have criticism on Microsoft here?

Saturday, December 06, 2003 10:34 AM by Paul Looijmans
So you'd rather move of to a less popular location with less MSFT employees around to read your views on their products? To me that calls into question your motivation for writing as critically as you do. Do you complain because you want things to improve or do just complain for complaining's sake?

If you want things to improve you probably know as well as I do that proximity is a very important factor in being heard, which is the first step to things actually changing. By blogging on the same website as many MSFT employees you greatly increase your chances of being heard and things actually changing for the better, so why move?

Furthermore I'd expect most MSFT employees are used to be being critized by now and, in general, respond to it very well. I expect one of the main reasons you were let in to the Whidbey early-access program is because you were so very critical of VS.NET or am I mistaken?

# re: Is it still allowed to have criticism on Microsoft here?

Saturday, December 06, 2003 10:52 AM by Frans Bouma
(geezz, 3 Pauls ;))
Paul W.: I understand that criticism ventilated on a MS site will be read by more people than when I do that on say dotnetjunkies.com. The thing is: do the postings fit into what's said on the site? With 99% hail and praise postings on weblogs.asp.net, they won't.

Paul L.: I don't care if the site my blogs are on is 'the most popular', so having a blog here makes me part of some 'inner circle'. I also don't 'complain', there is a difference between complaining and having criticism.

I can tell you that within a few weeks I'll probably blog about MS' anticompetitive actions towards O/R mapper vendors. I'm talking about that kind of criticism, stuff that really hurts MS' product sales. Will that be tolerated here, or will that be appropriate? It's .NET related. But it's not that appropriate on a site where the vast majority of blogs are pro-microsoft, at least that's how I feel about it.

I don't think I was let into the whidbey early access program because I criticize, but because I have arguments for criticism. Valid arguments. That's a different thing. It's easy to say something sux. It's hard to tell another person why.

# re: Is it still allowed to have criticism on Microsoft here?

Saturday, December 06, 2003 11:00 AM by Jim Martin
Yep, this site should be Weblogs@Microsoft.Net. I don't think I like this feed much anymore. That's why I tend to read weblogs@DotNetJunkies.Com. It's not commercialized, and I find that if there is an article of interest over here, then someone at DotNetJunkies will link to it. I do respect, and like to hear what MS Employees have to say, but it is just covers to many spectrums from Outlook to Longhorn to...

# re: Is it still allowed to have criticism on Microsoft here?

Saturday, December 06, 2003 11:17 AM by Paul Looijmans aka the third Paul
"there is a difference between complaining and having criticism"

Very true! So what do you want to do: sit in a corner somewhere where nobody hears you and complain, or do you want to be in (what appears to be) the center of the Microsoft blogging universe and direct your critical remarks at the people that can actually change the things you're critical about?

It's not about being popular or being part of an 'inner circle', it about being heard, it's about not running away from a discussion!

# re: Is it still allowed to have criticism on Microsoft here?

Saturday, December 06, 2003 11:24 AM by Frans Bouma
Jim, my thoughts exactly.

Paul III :) That's also a good point, that's why I'm not certain what to do: move or stay.

# re: Is it still allowed to have criticism on Microsoft here?

Saturday, December 06, 2003 11:28 AM by Raymond Chen
I say criticize all you want.

# Moving?

Saturday, December 06, 2003 11:39 AM by Fabrice
I have the same feeling, Frans. First we moved to http://weblogs.asp.net then it becomes the home for Microsoft employees. This is all justified, but...

It's not a problem about criticizing or not. It's a problem of image. I don't want to be assimilated to someone doing propaganda for Microsoft. From a visitor point of view, I guess weblogs.asp.net has just become too much Microsoft to be in sync with the image we had when it all started at dotnetweblogs.com. weblogs.asp.net is now too tied to Microsoft to sound free.

Maybe the community is shifting, and maybe the dotnetjunkies weblogs look more like what I want. I'll take a look at that.

# re: Is it still allowed to have criticism on Microsoft here?

Saturday, December 06, 2003 11:40 AM by Paul Speranza
Frans,

I hope that you'll stay. I enjoy your posts. I you have something to say, say it. Maybe that is how we'll get some lively discussions going with the MS people. I like the idea of them being involved, and I have to believe that the opinions of others should interest them, otherwise whats the point?

Regards,
Paul Speranza

# re: Is it still allowed to have criticism on Microsoft here?

Saturday, December 06, 2003 11:49 AM by Douglas Reilly
Frans,

I agree with Paul. I hope you stay as well. I certainly have felt free to say things that do not follow the MS company line, though certainly the fact that I sgree with what MS says more than I disagree, but I have no concern about being censored in any way. I expect this main weblogs.asp.net feed is lots more popular with folks than any individual feed is likely to be, and I certainly agree you have things to say that I like to hear.

# re: Is it still allowed to have criticism on Microsoft here?

Saturday, December 06, 2003 11:50 AM by Andrew
Why don't you like weblogs.asp.net?
This blog dedicated to asp.net and related
and if you have what to say negative on
THIS topic you're welcome...
How I can understand it's official microsoft
politic for now(Longhorn was released solely
for developer feedback for example) so
participate in discussion and blog in other
place about other themes no hesitate.
And of course I'm greatly apprecate MS developers attention on this subject without dubt.
What's the problem mate?

# not ASP.NET

Saturday, December 06, 2003 11:58 AM by Fabrice
Andrew just showed what's wrong. These weblogs were not revolving around ASP.NET and Microsoft only in the first place.

# re: Is it still allowed to have criticism on Microsoft here?

Saturday, December 06, 2003 12:01 PM by SBC
Look at it another way - any criticisms, etc will get to MS real fast as they would be reading this directly! No sales & user support layers here.. :-)

# re: Is it still allowed to have criticism on Microsoft here?

Saturday, December 06, 2003 12:02 PM by Jim Martin
Exactly! Change the name, break it into categories, that way if a person wants to read the Microsoft Employee Blog then they can subscribe to the Microsoft Employee Blog feed.

# re: Is it still allowed to have criticism on Microsoft here?

Saturday, December 06, 2003 12:10 PM by julie lerman
My personal feeling is that you will not have a problem of content as the additions will raise the bar (in a good way) on productive discussions. I think the thing to worry about is content overload. That's why I think Frans' original idea of feed groupings is interesting. A group could be based on an entire blog being in one category (and I think the blogger could choose which one they fit into) or back to the oft-discussed idea of common post categories. Now defining those categories will be a challenge! "MS Bloggers" "ASP.NET Bloggers" "Jack of All Trade Bloggers" "Genius at Work Bloggers" ".NET Novice Bloggers" or even one for people like me "Bloghorrea Bloggers". :-)

# re: Is it still allowed to have criticism on Microsoft here?

Saturday, December 06, 2003 12:30 PM by Robert Scoble
Please reread "How to Hate Microsoft."

We're very open to criticism. Now that Microsoft employees are here, I say it's even more open.

http://longhornblogs.com/scobleizer/posts/345.aspx

# re: Is it still allowed to have criticism on Microsoft here?

Saturday, December 06, 2003 12:45 PM by Rob Chartier
I quote...

"If a tree falls in the woods and no-one is around to hear it, does it make a sound?"

If you run off to some corner of the web, and critisize where no one can see you..well then whats the point?

Stay here, yell and scream and you KNOW you will get some sort of response. Justify your critisizms and back it up with something intelligent and you just never know....

If the 20+ comments above, alone, didnt convince you that your thoughts are being heard every day (and are valued), then I guess you might as well just slink away. ;)

# re: Is it still allowed to have criticism on Microsoft here?

Saturday, December 06, 2003 12:56 PM by Omer van Kloeten
I have a weblog here just to talk .NET, not about Microsoft.
However, if I have criticism towards Microsoft (which is healthy for any company), I think they should hear what I have to say.

And a note about the main feed - I never go there, it's just full of people talking about things that aren't really related to .NET. If I find a link to an interesting blog, I read it. If I want to read a blog, I subscribe to it.

# re: Is it still allowed to have criticism on Microsoft here?

Saturday, December 06, 2003 1:02 PM by julie lerman
whoops - I was referring to Steve Eichert's suggestion (http://dotnetjunkies.com/WebLog/seichert/posts/4285.aspx) to which ScottW (over there) responded that categorized feeds are on their way...

# re: Is it still allowed to have criticism on Microsoft here?

Saturday, December 06, 2003 2:30 PM by Nick Burns
stop being a little baby!

criticize all you want

# re: Is it still allowed to have criticism on Microsoft here?

Saturday, December 06, 2003 2:55 PM by Kevin McCallum
I don't have a blog here but am subscribed to many of the feeds and read the main feed often to see what I may be missing. I love the varying opinions from all of you and I'm not concerned that the MS crew is going to distort that. It's great to see the interaction between the people building the product and those using it.

Regarding MS taking over the O/R world, you should only be concerned if their product is better than yours. Sure, many people will use it as a default because they can easily find it, but others, like me, will do our research and pick a product that best fits our needs. Products like yours are certainly in need so I can understand why MS is building one. By the way, despite all the hype surrounding ObjectSpaces, I recently bought your product and it's working great for me.

# re: Is it still allowed to have criticism on Microsoft here?

Saturday, December 06, 2003 3:54 PM by Thomas Tomiczek
::Regarding MS taking over the O/R world, you
::should only be concerned if their product is
::better than yours.

Ah, oignoring reality here?

When:
* MS comes out with a free sponsored O/R mapper (which, btw., CAN be seen as illegal in a lot of countries)
* Bundles this into the core .NET SDK installer

Then there is no reason to be concerned? You should make a reality check on how people think.

* Most people wont spend on a commercial O/R mapper even if it is better.
* There are certain disadvantages a commercial O/R mapper has to overcome (mostly when hunting for hosted environments) due to the fact of not being installed on the server.

::Products like yours are certainly in need so
::I can understand why MS is building one.

Me too. Well, I would understand if MS actually WOULD build a PRODUCT. You may want to look up the definition of "Product" in this regard. Simply extending functionality and givint all existing companies a competitive disadvantage is NOT "fair play".

I can definitly see where Frans is heading - being in the same situation. Our company is also looking into the situation right now, and some of the issues we are discussing here would not make MS happy.


Frans' concerns regarding the situation of this blog is actually very interesting - I have been (and am) daily here, but, I dont really read too many postings here in detail - there is way too much blatant advertising here now.

# re: Is it still allowed to have criticism on Microsoft here?

Saturday, December 06, 2003 4:15 PM by Shannon J Hager
Frans, I don't understand why you would want to move. I've read what you posted but I don't buy it. You don't seem like the type to hide like that. Why would you want to move away from the target of your criticisms? If MS is your target, you should fire as close to them as possible. There is no better place to put your soapbox than right here where it has been for months.
If you are planning on lying about MS, then maybe you should move. If not, then you shouldn't have any worries. If you point out something bad someone did, it isn't your fault for saying it, it is their fault for doing it.
Also, the chances that you will gain insite on the facts is much higher here than whatever other corner you would move off to hide in.

# re: Is it still allowed to have criticism on Microsoft here?

Saturday, December 06, 2003 4:21 PM by Darrell
I can't believe the FUD and general gross inaccuracies in Tomiczek's comment.

Since when is extending a product and giving the enhancements to customers illegal? When it's your product that the enhancement is replacing, right.

Extending functionality for a given product and giving it to customers *when they own a valid license for the same product* is not considered fair play? Let's drag out the "it's not fair!" argument, again only because it's our product that is losing market share. That's a weak argument that has been repeatedly thrown out in court, although if you asked an attorney to take your case he would tell you it was a great argument and then ask to be paid in advance (not on contingency of you winning).

Competitive advantages and disadvantages are the results of competing well in the marketplace. Don't cry just because Microsoft decided to move into what you claim is your product space. MS added CD-burning support to Windows XP, that's more of a new piece of software than an extension of the operating system, and it's totally legit and you don't even mind do you?

# re: Is it still allowed to have criticism on Microsoft here?

Saturday, December 06, 2003 4:32 PM by Frans Bouma
Darrell, it's no FUD, he's right.

Objectspaces is part of the problem. It's also the free tool MS gives to developers to create the mappings. This way, a lot of potential O/R mapper customers do not have to buy such a tool. This will make a lot of O/R mapper vendors go out of business.

When they do that, and they will because the market all those O/R mapper vendors are targeting is dramatically decreasing, MS has what it wants: people use Objectspaces, there are no real competing products, and they can sell MBF, which is the true cash cow for MS in the coming years.

If you want to know, Darrell, we're currently talking to lawyers because of this, simply because what MS will do with Objectspaces is illegal in Europe, plain and simple.

It would be a TOTAL different ballgame if MS would SELL a competing product, because then they would play fair. Now they will not, they will give away a tool that is on every developers harddisk when they install .NET sdk or visual studio.net. How are O/R vendors able to compete with that?

# re: Is it still allowed to have criticism on Microsoft here?

Saturday, December 06, 2003 5:00 PM by Tim Marman
http://weblogs.asp.net/tmarman/posts/41748.aspx

# re: Is it still allowed to have criticism on Microsoft here?

Saturday, December 06, 2003 5:06 PM by Paul Speranza
I see Frans' point here about the tool being part of VS. I understand that things like this do put developers out of work.

But isn't this the natural progression of anything? Once a concept gains popularity people starting asking companies to include it in their products.

Didn't Sheridan give us the first set of 3D widgets, then they became standard in VB. How about all of the tools Borland puts in their enterprise versions?

What about opensource? Look what they and Sun are doing with the Office products.

What I don't want is any government telling a vendor what they can give away for free with their products.

Now product developers can try to innovate all they want but like a previous poster said, if the MS version does most of what we need, will we be willing to shell out money for the extras?

That is the paradox.

# re: Is it still allowed to have criticism on Microsoft here?

Sunday, December 07, 2003 3:36 AM by Thomas Tomiczek
::That is the paradox.

It is not a paradox.

Destroying product markets is simply one thing: illegal. There are laws about it.

Open source is fine - when noone involved gets paid. But when a company puts up money to develop and then gives it away for free, there are laws for handling this.

# re: Is it still allowed to have criticism on Microsoft here?

Sunday, December 07, 2003 4:40 AM by Paul Gielens
> But isn't this the natural progression of anything? Once a concept gains popularity people starting asking companies to include it in their products.

Big chance this is MS's main line of defense in court. Personally I don't think the OR-mapper tool suppliers have a case here... MS is just filling up the gaps in a product (which isn't actually a product) they gave away for free from the start. Why would they change their business model, just because the world surrounding them is changing? That makes no sense at all. It's their technology, tool/product suppliers just hop along on the success trip exposing themselves to these vulnerabilities.

# re: Is it still allowed to have criticism on Microsoft here?

Sunday, December 07, 2003 6:28 AM by Frans Bouma
That line of defense hasn't brought them anything in the Netscape case and will not bring them anything in the Mediaplayer case in Europe.

The problem is not that MS includes a given technology in a framework. The problem is that MS includes a TOOL into the framework and lacks to produce a foundation for these tools in the framework. MS should have build an EJB equivalent in .NET so each and every O/R mapper vendor could have build his tool on that foundation. Now that foundation isn't there, worse, a competing tool is delivered, and even worse: it's free.

Now, the free pricetag, the extremely large marketing power of MS (it's hyping the stuff already, 1 year before release), the availability of the tool on every harddisk of each .net developer... a situation you can't compete with.

Paul G.: you remember the KNP lawsuit with the free internet for schools and why they lost? They lost because they delivered something for free that costs them money. MS puts a lot of money in Objectspaces and the free tools. To win over developers for Objectspaces so they know it thouroughly and will look further towards MBF. A simple scam, yet very harmful for the .NET community, because MS has now shown they will change .NET to make it sell their own products, not just to bring a good foundation for developers.

# re: Is it still allowed to have criticism on Microsoft here?

Sunday, December 07, 2003 7:26 AM by Mike Blumenthal
Frans,

Please stay. Sometimes your posts infuriate me. And therein lies their value. That which infuriates me makes me think, and your presence makes the feed more balanced and therefore more useful, IMO.

If the proprietor starts to censor you, by all means move, OTOH, please don't effectively censor yourself by removing yourself from a feed where people who aren't looking for you will find your thought-provoking posts, to a new location where only those already looking for you will find you.

# re: Is it still allowed to have criticism on Microsoft here?

Sunday, December 07, 2003 9:41 AM by Rob Tillie
I see your point Frans, but one thing isn't clear to me.
You state that they haven't created a foundation for these tools in the framework, but isn't that the System.Data.ObjectSpaces assembly?

Greetz,
-- Rob.

# re: Is it still allowed to have criticism on Microsoft here?

Sunday, December 07, 2003 9:48 AM by Frans Bouma
Rob: no, EJB is something complete different. EJB is a framework which can be used as a base for O/R mappers, and thus for objectspaces, a generic framework, not something just focussing on O/R mapping and inside that just focussing on Oracle. If they had done that, OTHER people could have added for example oracle support to that framework. Now this is not possible.

# re: Is it still allowed to have criticism on Microsoft here?

Sunday, December 07, 2003 12:04 PM by Rob Tillie
Frans: I didn't know it was only focused on Sql Server. Then it's indeed a shame...
To come back on your original point, about leaving this blogscene: if you would have left, this large discussion wouldn't have occured, because the amount of people reading it wouldn't be so high, and I think this is a good place to have such a discussion.
I can imagine how you're feeling by being pushed out of the market, but I would advise you to let it sink in for a couple of weeks...

Greetz and good luck with it,
-- Rob.

# re: Is it still allowed to have criticism on Microsoft here?

Sunday, December 07, 2003 12:25 PM by Robert Brown
Am I the only one that reads blogs via an RSS reader?

Once I've subbed, I don't know or care where a blog is hosted, I'm just reading the content.

I think the only reason to move is if the site host censors you or gives you other difficulties, which doesn't seem to be the case.

# re: Is it still allowed to have criticism on Microsoft here?

Sunday, December 07, 2003 2:49 PM by Tosh Meston
http://weblogs.asp.net/tmeston/posts/41868.aspx

# re: Is it still allowed to have criticism on Microsoft here?

Sunday, December 07, 2003 2:49 PM by Kris
Frans,

Remember what happened to Don Box. If you can't beat them, then join them.
Don said, he had to think about his pension. ;)

But I'm afraid that all big companies will keep on filling the gaps all the time. Yukon is another gap being filled, and I'm sure you can name some other already filled gaps.

# re: Summary of reactions on my blog yesterday

Sunday, December 07, 2003 3:14 PM by Paul Speranza
Frans,

I'm glad to see that you are going to give this blog a chance for a while. Alot of us will be paying attention to your posts, so fire away. We'll soon see if its ok to tell the emperor he has no clothes.

Regards,
Paul Speranza

# re: Is it still allowed to have criticism on Microsoft here?

Sunday, December 07, 2003 3:50 PM by Scott
Frans,

I don't think that ObjectSpaces is going to knock anyone out of any market. Crystal Reports, at least a 'lite' version, is bundled with Visual Studio and yet there is still a market for Reporting tools. Why? Crystal Reports doesn't quite cut the mustard in some ways. Same with the DataGrid. There is still a market for controls like the DataGrid simply because the DataGrid is kind of like the banjo playing boy on the porch in deliverance. It's just not quite right.

Given what I've seen of ObjectSpaces so far, as well as the Data Factory objects in .NET 2.0. I 'm 90% sure that there will still be a market for non-MS O/R mapping tools and DALs after .NET 2.0 comes out.

# re: Serious ASP.NET Editor flaw lives on in VS.NET 2003

Sunday, December 07, 2003 4:32 PM by matt
I've been doing web design in asp for nearly 3 years and I'm now migrating to asp.net. All I can say is that this bug shows how pathetic microsoft's visual studio design team is and its OBVIOUS none of them have ever done any real web dev in their careers. I also dont know how a bug like this could get past the testing level unless it was completely ignored for reasons stated by Mike Moore in his letter. This bug is seriously so annoying it makes me want to stab out my eyeballs with a rusty spoon. It makes the design view completely useless for everyone but newbies who create their high school web project from an oreilly asp.net book.

# re: Summary of reactions on my blog yesterday

Sunday, December 07, 2003 7:59 PM by Paul Wilson
Glad you're staying -- let those Microsofties be damned. :)

# re: Is it still allowed to have criticism on Microsoft here?

Sunday, December 07, 2003 8:54 PM by Darrell
"Objectspaces is illegal in Europe, plain and simple." It's not illegal until proved in court. You may think it is illegal, and that's fine. I may think it is legal, and that is fine as well. We'll all see what the court says.

I am not condoning anti-competitive practices. But I also do not want to see statements such as "Objectspaces is illegal" stated as truth when in fact nobody knows yet.

# re: Is it still allowed to have criticism on Microsoft here?

Monday, December 08, 2003 2:33 AM by Peter
How about WebMatrix, also a free tool which MS supplied? Do you think that's unfair as well?

# re: Is it still allowed to have criticism on Microsoft here?

Monday, December 08, 2003 2:33 AM by Roy Osherove
FWIW: stay and write here. your posts make this place better.

# re: Is it still allowed to have criticism on Microsoft here?

Monday, December 08, 2003 4:34 AM by Stephane Rodriguez

Andrew says "How I can understand it's official microsoft politic for now(Longhorn was released solely
for developer feedback for example)"

Wrong. They make you feel you are part of the making of the product, and that's part of the marketing initiative. That's so obviously a way to monetize communities and make each of those members act as evangelists that I can hardly think you don't get it, do you?

# re: Summary of reactions on my blog yesterday

Monday, December 08, 2003 8:38 AM by SpiderMan
Keep on blogging and expressing your mind freely, that's what the BLOG is. :)

# re: Is it still allowed to have criticism on Microsoft here?

Monday, December 08, 2003 9:52 AM by Stephane Rodriguez

Regarding contributions to a MS-centric weblog, I wonder whether it makes sense at all anyway.

If you provide good remarks, feature wishes with a very customer-centric eye and anything else that helps them build and sell better products, then you are basically doing the job of an employee without getting paid.

In the real world, no one works for free. Since work must be paid, and it isn't what's currently being done through weblogs.asp.net, I don't see any point in contributing at all, anyway.

Alternatively, someone not from MS may wish to contribute a MS blog site to tease or impress. I think it's a valid scenario for a lot of people out there who would do that as a matter of getting a job. That being said, I don't think that's the best way to succeed. Quite the contrary, people spending their time on weblogs are people not designing products. Someone would impress them much more with well designed products.

My 0.5 cent



# re: Is it still allowed to have criticism on Microsoft here?

Monday, December 08, 2003 2:59 PM by Frans Bouma
Hi Stephane,

I see your point, but blogs aren't always about product feedback ;). I like to talk about software development in general, so I hope someone will learn something from my texts. I agree that giving excessive feedback about all kinds of products to MS is indeed non-payed testing. But people are greedy, so a free longhorn cd is seen as a gift, I don't think that will ever change ;)

# re: Is it still allowed to have criticism on Microsoft here?

Tuesday, December 09, 2003 5:57 AM by Eric Hill
Good. Leave. Goodbye!

# re: Children...

Tuesday, December 09, 2003 2:55 PM by Scott Galloway
Frans, you shouldn't censor yourself! You have a right to your opinion way better than many of the pro-MS / pro-Open Source sheep you see around the place. If you have an opinion and are prepared to defend it, more power to you!

# re: Children...

Tuesday, December 09, 2003 3:02 PM by Frans Bouma
Yeah well, deleting some flame / troll every half hour or getting mail from people who ask me why I flamed them on their blog while I never ever read that blog in the first place gets annoying after a while.

It definitely beated the fun out of blogging for me for today and maybe also for a lot of days to come.

# re: Children...

Tuesday, December 09, 2003 3:05 PM by Frans Bouma
Sorry about us children. :)

# re: Children...

Tuesday, December 09, 2003 3:07 PM by Alex Lowe
Just for the record - that SUCKS! I work for Microsoft and I think you raised a valid concern on your part. I personally think you are incorrect in your assessment of the situation but your opinion is your opinion.

It is sad that people hanging out on thses sites can't participate with some respect for those who are willing to share their ideas, knowledge, and hard work with the world.

# re: Children...

Tuesday, December 09, 2003 3:20 PM by Scott Watermasysk
I agree with Alex. Feel free to post away. The children are at issue, not your posts (again, not that I agree with you :)

This is why we will likely have to go to a registration format sooner than later for comments. :(

-Scott

# re: Children...

Tuesday, December 09, 2003 3:21 PM by Paschal
I think Frans that removing your posts works for the people who think this blog has no space for Microsoft critics.

I will maintainmy opinion if I was you, but hey I am not you !

# re: Children...

Tuesday, December 09, 2003 3:25 PM by OmegaSupreme
Franz its a sad fact that a certain % of any group of people are a bunch of fools.

We shouldn't let them ruin our fun though, but what they are doing to you does suck I know.

I definately think that this community is richer for diverse opinions as it often gives us another dimension on what we do. Like some of the info posted about mono, or your own comments about Oracle a while back.

Please try to relax and ingnore the idiots, blog on dude :D

# re: Children...

Tuesday, December 09, 2003 3:29 PM by Frans Bouma
Scott, I think so too you need some kind of registration, or at least IP number logging or something.

You can't prevent everything but now it's not fun expressing some opinion...

# re: Children...

Tuesday, December 09, 2003 3:38 PM by Bill Gates
I find it somewhat troubling that I can sign with any name.

Its one thing to be anonymouse, but here I can pretend to be anyone.


-AndrewSeven

# re: Children...

Tuesday, December 09, 2003 3:53 PM by Chris Frazier
I'm just glad my aggregator caught your post so I could read what your opinions are.

I can't speak for anyone else, but yours is one of the feeds that I have subscribed in my aggregator for exactly this reason - you have always spoken your mind.

Anyways, post on, Frans!

# re: Children...

Tuesday, December 09, 2003 4:09 PM by Yves Reynhout
Don't take posts down because of a little heated debate. As I said before, everybody is entitled to their opinion and opinions should be treated with respect, not with "flame wars" and "identity theft". There's no excuse for what "the children" did, but "blog comments" still boil down to "trust".

# re: Children...

Tuesday, December 09, 2003 4:12 PM by Scott Galloway
Scott...hey what about Passport (umm...semi-joking :-)), seriously, some form of membership with the option to lock out comments to registered individuals (anonymous as the name otherwise) would be very useful.
Us 'independent' bloggers will probably be harder hit by this than the group bloggers (since you can have a single sign-in across all blogs) - but totally necessary.

# re: Children...

Tuesday, December 09, 2003 4:17 PM by Frans Bouma
Yves: trust me, I can take a tough debate and the one today in the thread below the posting wasn't a tough debate per se. :) It's the crap that's posted in other threads in other blogs that's annoying. When I get mail from people asking why I replied rudely to their blog while I haven't read that blog in my entire life, it's getting out of hand.

If people don't agree with me, that's fine, you didn't agree with me today, perfectly ok. That's not the reason I did take the thread down, if you doubt about that, please check the reactions on my Oracle posts or Stored procedure posts :)

# re: Is it still allowed to have criticism on Microsoft here?

Tuesday, December 09, 2003 4:36 PM by Jeff Gonzalez
I don't know if someone mentioned this or not, but Microsoft has had package and deployment solutions built into their products for sometime. There still seems to be a market for things like Wise and InstallShield. Visual Studio has setup projects that directly compete with those directly. Why should an O/R mapper product be any different?

I don't think Microsoft is violating any laws, and or violating any code of ethics. They are exposing technology to people who might not have been aware of it to begin with. You state that it is harmful to the .NET community, how can it be? It is harmful to YOUR community and YOUR pockets. You can speak for your company, but you cannot assume to speak for the .NET community.

I think your effort should be concentrated on developing features and providing services that ObjectSpaces will not. Why waste all of this energy whining about it and do something productive instead?

# re: Children...

Tuesday, December 09, 2003 5:19 PM by Bruce
I'm really sorry to hear that; I enjoy reading your opinions, even if I don't always agree with them.

# re: Children...

Tuesday, December 09, 2003 8:40 PM by leon bambrick
if frans' comments didn't rock the old boat now and then - what would be the point of having him?

you're damn opinionated and you're sometimes wrong - but your clever and that's why, even after a major blogroll clean up that culled off scobleizer *and* dave winer, i choose to keep frans in my list.

# re: Children...

Wednesday, December 10, 2003 2:58 AM by S Bradley
Never ever change your "voice" because of others. If it's how you feel, if it's your truth, then don't change your voice.

Put the post back.

# re: Is it still allowed to have criticism on Microsoft here?

Wednesday, December 10, 2003 3:26 AM by Jason
Perhaps we could do without whining babies blogging here?
Leave if you don't like it.
Fine by me.

# re: Children...

Wednesday, December 10, 2003 8:47 AM by Josh Baltzell
It's not often that I see anyone getting all riled up about something to the point where they start screwing with someone. Congrats on getting some people that excited, you can consider yourself a writer now that some people hate you. :)

# re: Stored procedures are bad, m'kay?

Thursday, December 11, 2003 1:46 AM by anonymous
It's ironic that this flame on SP has been done using a blog engine that is powered by SP.

# re: Here's a (big, bad) difference between VB.NET and C#

Thursday, December 11, 2003 11:01 AM by Carlos
C# lets you define a new GetObjectData method, but you still can't call the original method. So you still need to recode the base class implementation. e.g.:

public class MyTable : DataTable, ISerializable
{
void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
{
((ISerializable)this).GetObjectData(info, context); // calls this method, not the base class
((ISerializable)base).GetObjectData(info, context); // compiler error
base.GetObjectData(info, context); // compiler error
}
}

# re: Serious ASP.NET Editor flaw lives on in VS.NET 2003

Thursday, December 11, 2003 2:48 PM by Jim Han
I am using Visual Studio 2003 and it looks like this problem is fixed. In old Visual Studio it used to strip "Style" in <td> tag, but it's no longer doing it.

Can someone verify this?

Thanks.

Jim

# re: Stored procedures are bad, m'kay?

Thursday, December 11, 2003 6:37 PM by Eric J. Smith
Frans,

"way before Eric Smith thought it was a good idea" Wow! You're turning into a regular thona.

What I do is run a script that drops all my standard CRUD procs and then re-generate them all when the schema changes. The same thing for my DAL classes. It's called active generation. I think you know a thing or two about this so I'm not sure why you would be slamming me or my tool over it. While CodeSmith does not have the full blown template set that LLBLGen Pro does, the two products are basically the same thing (except CodeSmith is free). Someone could just as easily generate their DAL using an XML O/R mapping file and use dynamic SQL or whatever they want. That's the beauty of a template based code generator. It doesn't dictate architecture to the end user. I don't know about you guys but I will never use a code generation tool that forces me to do things a certain way.

# re: Roundtrips and the real bottlenecks

Sunday, December 14, 2003 8:18 AM by John

Hi,

Your blog contains good info. Keep it up.

# Stored procedures vs. Ad-hoc queries

Thursday, December 18, 2003 1:25 AM by TrackBack

# re: The SP Benchmark code

Friday, December 19, 2003 7:39 AM by Majid Haeri
Would you happen to have the VB version of the
"The SP Benchmark code". I am new to VB.NET and I am trying to take your advice and go with the Parmeterized Dyanamic Query rather than Stored Procedures.
Regards,
Majid Haeri
majid_97@yahoo.com

# re: VB.NET developers, continued

Friday, December 19, 2003 1:20 PM by asdf
Don't worry, C# programmers aren't considered highly skilled developers either.

# re: Why Edit & Continue is a bad thing

Sunday, December 21, 2003 1:43 PM by george
Edit and continue save so much time when fixing trivial errors that it is a shame it hasn't been implemented yet - whenever I read the ENC comments form C# people, it's just typical of their "my way of the highway" mentality that keeps progress in the 19th century. Get over it C# people, there are some nice features in VB that put the IDE ahead of the C world you are accustomed to and it's time you opened your mind and stop acting like bunch of geeks. Just because you are C people doesn't really make you better programmers - it just proves you like to suffer more than the rest of us.

George

# re: ORM and O/R mapping

Sunday, December 21, 2003 5:08 PM by Ingo Rammer
I'd tend to disagree. I think that "ORM" is an overloaded acronym which - based on the context - either means "Object Role Modelling" or "Object Relational Mapping". I've seen it used in both meanings before ...

# re: ORM and O/R mapping

Sunday, December 21, 2003 7:50 PM by Steve
My pleasure ;-) I believe strongly in O/R Mappers as I'm sure you do too. Its nice to see so many people talking about them!

# re: ORM and O/R mapping

Sunday, December 21, 2003 11:59 PM by scott
tomato
tomato

# re: ORM and O/R mapping

Monday, December 22, 2003 1:35 AM by Thomas Tomiczek
::I'd tend to disagree.

Without a reason, as I must say.

::I think that "ORM" is an overloaded acronym
::which - based on the context - either
::means "Object Role Modelling" or "Object
::Relational Mapping".

Why do I think "bullshit" hen I read this?

I will tell you.

This hyperlink:

http://www.acronymfinder.com/af-query.asp?String=exact&Acronym=ORM

points to Acronymfinder, which is about THE ressource for overloaded abbreviations :-) I mean - look up CMS, and you sill understand.

it lists a LOT of overloads for ORM, but NONE is "Object / Relational Mapper".

So, with all respect - what you THINK is totally irrelevant. It is no an acronym, whether you try to make it one or not.

If people would keep to use words in the right meaning, they would be understood better. Honor the language you speak, and dont pollute it with your thinking.

# re: ORM and O/R mapping

Monday, December 22, 2003 2:20 AM by Dennis v/d Stelt
Thomas, charming as always!
I'm lovin' it! ;)

# re: ORM and O/R mapping

Monday, December 22, 2003 3:16 AM by Ingo Rammer
Sorry, Thomas. I refuse to discuss at this level of language and attitude. If you are interested in a discussion of how language evolves, how acronyms are created, and how we should treat them, I'd be happy to respond if you re-post in sane language.

In the meantime:

http://www.google.com/search?q=orm%20%22object%20relational%20mapping%22 (1050 hits)

vs.

http://www.google.com/search?q=orm%20%22object%20role%20modelling%22 (363 hits)

-Ingo

# re: ORM and O/R mapping

Monday, December 22, 2003 3:23 AM by Frans Bouma
Ingo: heh :) ok, that means OR not a lot of people use ORM (the modelling) (wouldn't be surpised) OR a lot of people use the wrong acronym ;)

The point of my blogentry was that ORM (the modelling, geezz... because I have to say 'the modelling' proves my point ;)) is a term for Object Role Modelling, which doesn't have another name afaik. This means that to avoid confusion among developers, it's better to stick with the original terms.

# re: ORM and O/R mapping

Monday, December 22, 2003 4:55 AM by Vincent Snijders
Using google statistics is arguable.

http://www.google.com/search?q=%22object%20relational%20mapping%22 (17400 hits),
so one in about 16 pages with "object relational mapping" has the acronym ORM.

http://www.google.com/search?q=%22object%20role%20modelling%22 (636 hits), so more than half of the pages with "object role modelling" contains the acronym ORM.

Conclusion: ORM more used for object role modelling than for object relational mapping.

# re: ORM and O/R mapping

Monday, December 22, 2003 8:51 AM by Ingo Rammer
Vincent & Frans: Agreed.

I just wanted to support my point that I've seen it used with both meanings (a point with which Thomas didn't agree too much). The google.com query shows this as well and - just as I did - without any notion of whether this is right or wrong. It's just a snapshot of what people actually said.

-Ingo

# re: Stored procedures are bad, m'kay?

Monday, December 22, 2003 1:29 PM by Mac
This started out being interesting, but once again Thona has appeared and ruined it. Seriously, the guy is the most violent drunk I've come across in this arena. I think I'll head elsewhere ...

# re: Tool: The complete idiot's add-in for signing your assemblies with a strong name

Tuesday, December 23, 2003 3:21 AM by TrackBack

# Tool: The complete idiot's add-in for signing your assemblies with a strong name

Tuesday, December 23, 2003 3:30 AM by TrackBack

# re: Bitter message

Tuesday, December 23, 2003 3:53 AM by TrackBack

# re: Singing your assembly, newbie guide

Tuesday, December 23, 2003 9:09 AM by Scott
This is groovy. I've been wanting to look this up for a while but I've been too lazy. "Signing your component for dummies."

# re: Singing your assembly, newbie guide

Tuesday, December 23, 2003 9:12 AM by Paul Wilson
Excellent. I was thinking the same thing the other day when I read our infamous know-it-all saying how hard it was to do. :)

# re: Singing your assembly, newbie guide

Tuesday, December 23, 2003 9:12 AM by Frans Bouma
Heh, I wouldn't expect anything else than lazyness from a person from lazycoder.com :D ;)

# re: Singing your assembly, newbie guide

Tuesday, December 23, 2003 9:13 AM by Robert McLaws
You no longer have to register to download my tool. Thanks for the plug.

# re: Singing your assembly, newbie guide

Tuesday, December 23, 2003 9:15 AM by Frans Bouma
Not every bad publicity is 'good', Robert. (and why is my comment removed from the commentslist under your tool? Tssk.. censorship... )

# re: Singing your assembly, newbie guide

Tuesday, December 23, 2003 9:26 AM by Roy Osherove
Yes. It's easy, but why the heck not use a plugin? Why not make life easier? is that such a bad thing? Sure, I *could* write property getters and setters manually if I *wanted* to, but I use CodeSmart so make it fast and simple. Is that bad as well?

# re: Singing your assembly, newbie guide

Tuesday, December 23, 2003 9:26 AM by Peter de Boer
LOL, I was thinking about the same when I read the huge announcement.


Nice job, do I have to register in the future to read your blog ;-) ?

# re: Singing your assembly, newbie guide

Tuesday, December 23, 2003 9:28 AM by AndrewSeven
Thank you Frans!!!

Ugh. I really don't like that ( I do like this).

It had seemed so simple to sign my assembly, just like the steps above but with a key per project.

No thank you Robert.
There I was, left with this sinking feeling, that I had left out something, that this simple task was much larger than what I understood.

# re: Singing your assembly, newbie guide

Tuesday, December 23, 2003 9:31 AM by Frans Bouma
Peter: just subscribe to the RSS feed in your RSS reader, no registration required ;)

Roy: plugins can be buggy, can mess up your code, can crash the IDE, can corrupt files and more. And that for just 1 line of code. :D

I don't use any plugins anymore, after I wrote some macros to create regions and properties. I know these will work without hassle. But thats choice. If you want to use a plugin for 1 line of code that is always the same in every project you create, go ahead, it's a free world (for some).

# re: Singing your assembly, newbie guide

Tuesday, December 23, 2003 9:35 AM by Oleg Tkachenko
Using plugin for adding key file name to AssemblyInfo class????
LOL!

btw, first two steps could be replaced by
1. Run Start/Programs/Microsoft Visual Studio .NET (2003)/Visual Stuio .NET Tools/Visual Studio .NET (2003) Command Prompt

# re: Singing your assembly, newbie guide

Tuesday, December 23, 2003 9:38 AM by Frans Bouma
Ah good one, Oleg :) The less steps, the better :)

# re: Singing your assembly, newbie guide

Tuesday, December 23, 2003 9:39 AM by Roy Osherove
Just to play devil's advocate here, A macro is the same as a plugin for this discussion. It makes your life simpler. Regardless of the usefulness of Robert's plugin, You can't disregard "simple life mechanisms" so easily, can you? Sure, for one line of code it would seem a bit too much, but that's not usually the case.

# re: Singing your assembly, newbie guide

Tuesday, December 23, 2003 9:46 AM by Peter de Boer
Roy,

it's not really the fact someone creates a plugin, it's more the fact there's made a *huge* announcement for a solution to a problem while there is no problem. It's really not a big deal to sign an assembly.

What would you say when I created a plugin that for example adds the statement "using system.data" to the top of my page? Basically that's what it does.

# re: Singing your assembly, newbie guide

Tuesday, December 23, 2003 10:34 AM by Maxim V. Karpov
It is all interesting but Carl Franklin created a tool to generate key file then the only thing you need to do is to make changes to your Assebly Attributes :)

http://www.franklins.net/dotnet/snutil.zip

www.ipattern.com (do you?)

# re: Singing your assembly, newbie guide

Tuesday, December 23, 2003 10:39 AM by Christophe Lauer
Hi Frans,

This might work if you're the only developer on a project. But if your dev team has more than one developer, you *must* keep your secret key secret. This means that the developers shall not have the private key, but only the public key and use "Delay Sign" as described in this MSDN article. The GAC hassome special mode for skipping signature verification that has also to be used by developers during coding and testing. Then after, before burning the CDs, the assemblies have to be resigned by the "security officer", the only person in the company who should have access to the private key. Here's the link to the MSDN article:
http://msdn.microsoft.com/netframework/default.aspx?pull=/library/en-us/dnnetsec/html/strongNames.asp

Hope this Helps!

# re: Singing your assembly, newbie guide

Tuesday, December 23, 2003 10:45 AM by Frans Bouma
Maxim: you mean a wrapper around sn -k? :)

Christophe: good point. Although I think if you don't have a security officer it's not that big of a deal, but if you do, then indeed the developer should use delayed signing described in your article.

The fuzz here was more about a big announcement of a plugin to do something very simple :) The philosophy behind signing assemblies, (when to sign, when not to sign), installing in GAC or not, is a big subject, however if you've decided to do so (for example to be sure signed applications can use your assembly), the steps to sign the work are very easy :)

# re: Singing your assembly, newbie guide

Tuesday, December 23, 2003 11:20 AM by Joe Coder
I dont even see why this is a big deal, the process takes all of 30 seconds and is extremely simply...?

# re: Singing your assembly, newbie guide

Tuesday, December 23, 2003 12:43 PM by Sam Gentile
I agree with Frans and Joe Coder. For gosh sakes this is so frigging basic and it takes all of 30 seconds. This is chapter 1 of Richter for gosh sakes. How can anyone do aything in .NET if they don't know the most basic things like this? You don't need an add-in to do this as it is uncommenting two lines in AssemblyInfo.

# re: Here's a (big, bad) difference between VB.NET and C#

Tuesday, December 23, 2003 1:15 PM by Chuck Eaker
I don't know if this will work for DataTable, but take a look at the ISerialization details of extending ApplicationException in http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncscol/html/csharp08162001.asp.

# re: Singing your assembly, newbie guide

Tuesday, December 23, 2003 4:28 PM by Robert McLaws
You guys are all primadonnas. The first part of my post said I had 30 e-mails in three days saying that people didn't know what it was. OBVIOUSLY there was a need for it SOMEWHERE, or I wouldn't have done it. Buy you guys are all so friggin brilliant... that's why it wasn't written for you, or the 2000-some-odd people that understand it. It was written for the 6 MILLION other .NET developers who are just getting started in .NET, and don't get it. Not everyone is as smart as you are.

And BTW, It's not Chapter 1 of Richter. The VB.NET Security Book does not cover it until Chapter 10. And the fact that you think the problem is as simple as one line of code, means you don't REALLY understand what's going on under the covers.

And in regards to the add-in not dealing with delay-signing... most shops can't even understand regular signing... to them, delay signing is next to impossible. You have to start somewhere.

Developers look up to you guys for advice, for leadership. Is this being a leader? Leaders don't tear people down. When you post blatantly negative attacks on someone, it makes other people not want to be a part of this community.

Speaking of starting somewhere, I think you all forgot where you started. There was a time once where you didn't know what strong-name signing was either (it wasn't that long ago, since it came around with the Framework). I doubt anyone derided you for being stupid and not knowing how you did it. Sam, you just single-handedly insulted 6 Million VB.NET developers who don't get the same signing comments that are in the AswsemblyInfo.vb file. Are you calling them stupid?

# re: Singing your assembly, newbie guide

Tuesday, December 23, 2003 4:32 PM by Robert McLaws
Almost forgot. Singing your assembly, huh? I like singing songs, personally, but i can see how singing an assembly can be fun too.

# re: Singing your assembly, newbie guide

Tuesday, December 23, 2003 4:42 PM by Sam Gentile
It is on Page 90 of Richter. I, unlike a lot of those programmers, started 3 years afo with just the framwork and an editor and figured it out. I also started with Richter. If people would just read the damn book and understand the basics before playing with things like ASP.NET they wouldn't have these issues over and over. I do understand signing fully, I don't know what you are doing with your controls that is different from hundreds of others that don't have the issues you have. And don't call me a prima donna. If its anyone who hasn't earned their place but touts their own horn every frigging second, its you. I have stayed out of this for far too long. I dind't post anything when all those people attacked you but you just don't listen to the advice that Frans and people gave you. You constantly come off as the gift to the world and making asine statements like "done more in 21 years than anyone has in 40." Its that kind of thing that pisses people off and does what Jim McCarthy calls "flipping the bozo bit" and having people stop listening to what you have to say. You can rant all you want. It is a matter of a command or uncommenting out 2 commented out lines in the AssemblyInfo. I have been doing this for 3 years and it takes 30 seconds. If you want to blow it up to epic scale like you do with all your "announcements" knock yourself out. I still maintain that its very basic and that anyone that does not know the basics of assemblies (ala Richter Chapters 1-3) will have a near impossible time programming .NET. VB can try to hide everything away from people but in the end you just have to know what you are doing. Fundamentals.
As to your last asertion that I single-handly insulted 6 million programmers, you are sounding more riducolous every time you post. You saying wild things like this just makes you look bad.

# re: Signing your assembly, newbie guide

Tuesday, December 23, 2003 5:00 PM by Robert Hurlbut
The first thing I learned as well when I started .Net (and I started with notepad, MSDN, and Richter) was how to sign and delay-sign an assembly. The assembly, and how it works, how to use it, etc. is fundamental to understanding .Net.

I understand the reason you felt you needed to create the tool, but I disagree that it was necessary to create a tool when a simple explanation like Frans' would have sufficed. If the comments are not available in VB.Net (as it is in C#, which Sam and I use daily), then I would have answered those 30 emails you mentioned with a blog post explaining the issues. It helps produce better developers who understand why, rather than run another wizard and still have no idea what's going on.

Working with Sam day-in and day-out, I see that it is ingrained in him that developers understand "why" more than "what". He is not a "prima-donna", as he devotes hours of his time helping this client among many others in the .Net community to understand how .Net works. Sam was not trying to insult the 6 million developers -- instead, he was trying to help them understand why things work the way they do in .Net. Even the VB.Net Security book you mention (by Eric Lippert) goes through many details from the front-end to explain to the VB.Net developer why security is the way it is in .Net. He does all of that without running a single wizard. He mentions nothing about VB.Net because its immaterial to understanding the fundamental principles of .Net.

# re: Signing your assembly, newbie guide

Tuesday, December 23, 2003 8:24 PM by Shannon J Hager
Can I just skip to Step 9 and repeat it a few times?

# re: Serious ASP.NET Editor flaw lives on in VS.NET 2003

Tuesday, December 23, 2003 11:29 PM by Rip Ryness
Not only is this an annoying bug but I've got one worse. For some reason, the event wiring code that hooks buttons and other control's postback events to the code behind .cs file, dissapears, seemingly randomly, when a .aspx file is saved. Doesn't happen everytime but when the client calls up and says some button doesn't work anymore, it really sucks.

And that explanation for why the bug didn't get fixed is such BS. How many billions in cash does MS have in the bank? Hire consultants if your team is too la.. uh, uh, unable to rewrite the code.

# re: Signing your assembly, newbie guide

Wednesday, December 24, 2003 2:26 AM by Peter de Boer
@Robert: come on man, pointing out a typo from someone who's native language is not English??

It just shows you can't beat him on arguments.

I'd like to see you post in Dutch, and I promise I won't point out any typo if I can just understand what it's about.


[offtopic]
LOL @ Shannon :)

# re: Signing your assembly, newbie guide

Wednesday, December 24, 2003 4:19 AM by Frans Bouma
Shannon: hehehe :) You could of course do that, but my experiences are that, if you take step 9 too many times, it's adviced not to take any of the previous steps after that ;)

# re: Signing your assembly, newbie guide

Wednesday, December 24, 2003 4:19 AM by Frans Bouma
WARNING to mr. McLaws: do not ever post a reply to my blogs again. EVER.

# re: Signing your assembly, newbie guide

Wednesday, December 24, 2003 6:45 AM by Roy Osherove
Peter:

"What would you say when I created a plugin that for example adds the statement "using system.data" to the top of my page? Basically that's what it does. "


If I remember correctly there a a very cool plugin somewhere that allows you to automatically add missing import (using) statements to your file when you forget to add the. Something like, you time Thread, mark the work and make the shortcut keys, and the using System.Threading line appears automagically. simple, time saving, and yes, does not take a genius to figure out. Still, iot's a wonderfull time saving plugin. I would not call such as plugin useless.

# re: Signing your assembly, newbie guide

Wednesday, December 24, 2003 8:28 AM by Roy Osherove
Ugh, my typos are only enhanced on a norwegian keyboard, as my last comment would show..
I meant to say that you highlight the word "thread" and activate the plugin, to automatically have a "using System.Threading" line added to your code.
Hope that's more understandable.

# re: Signing your assembly, newbie guide

Wednesday, December 24, 2003 8:33 AM by Sam Gentile
I found my friend Keith Brown's article on strong names to be the *best* thing I have read in 3 years on the subject. Check it out http://msdn.microsoft.com/netframework/?pull=/library/en-us/dnnetsec/html/strongNames.asp

I blogged it http://samgentile.com/blog/archive/2003/12/12/10883.aspx

HTH

# Dewayne Mikkelson and his Radio WebDog, Shadow

Wednesday, December 24, 2003 8:40 AM by TrackBack
Dewayne Mikkelson and his Radio WebDog, Shadow

# re: Oracle 9i is already generations ahead and shows a .NET flaw.

Wednesday, December 24, 2003 12:13 PM by Sergey