Rants
Everytime I add a app.config file to a new C# App, it never does what I want. I want the app.config file to be deployed to the build directory so I can make changes to the app.config file and have it propogated. With the release of VS.NET 2003, us C# developers now have pre and post build steps. So I now have to remember to add the following to the post-build event:
xcopy /s $(ProjectDir)app.config $(TargetPath).config
I know I could write an "Add New Item" to make it happen, but I just haven't had the time. I just wish MS had done it for me.
UPDATE
Chris Sells has alerted me to the fact that if your project has a app.config file, VS.NET 200X will copy it and rename it for you. My bad. I could have sworn that I tried this before and it didn't work : (
When I was growing up we always had a couple of Holiday Inn towels hanging about. I never felt guilty until now. Follow the link...trust me!
I have been spending a lot of time writing about technology lately. After a phone conversation with Tim Ewald, it got me thinking. During the first half of writing the book, I was working full-time writing ATL/C++ apps mostly and trying to get up to speed with ADO.NET at night. While my girlfriend minds, I don't really.
While in this phase of the project, I learned a lot about the technology and the class signatures, but it was very hard to grasp the big picture of the real problems that people will/are facing.
Soon after I got a full-time position developing a large scale .NET application. This really helped me appreciate the nature of the techology. I started to get really excited about how ADO.NET would help people solve these problems. Later on I started doing a tour of .NET User Groups to talk about ADO.NET and this was enlightening as well. People were asking me real-world questions that I did not always have great answers for. In the end, both of these experiences definitely helped me write a better book IMHO.
So the quandry, do I go out and try to find a position helping build large scalep projects to stay sharp with the trench warfare that is coding or simply move to being a full-time writer/editor? I don't want to lose my edge of understanding the code, but trying to do both is exhausting.
In the end, I hope to find somewhere in-between. Work on designing large scale projects while being able to write/edit about feels like the good middle ground.
I have been thinking a lot about how Typed DataSets are generated and was spelunking through the code again when it got me thinking. The Typed DataSet generator doesn't really generate the code based on the .xsd, but on the DataSet. It simply loads the .xsd into a DataSet then interrogates the DataSet directly for everything (tables, columns, relationships, constraints). So if the Typed DataSet Designer cannot handle something (like relationships *without* constraints, see below), but the DataSet schema allows it...simply create the DataSet and save the .xsd file to see what it produces! This gets around some fundamental problems with the designer. It does require you start looking and understanding .xsd, but it is a useful skill to have anyway...right?
So my first relevation was how to add unconstrained relationships (no foreign key constraint, simply a way to navigate the data). Since the designer does not allow this, I looked at the .xsd and found that the DataSet handles this with a schema annotation:
<xs:schema>
<xs:annotation>
<xs:appinfo>
<msdata:Relationship name="ta2t"
msdata:parent="titleauthor"
msdata:child="titles"
msdata:parentkey="title_id"
msdata:childkey="title_id" />
</xs:appinfo>
</xs:annotation>
</xs:schema>
The five pieces of data in the msdata:Relationship element are the four pieces of data required when setting up a relationship. Pretty simple huh!
It makes me start to think of other DataSet allowable things that the Designer doesn't know about.
I hear from a lot of readers that they are creating 3-tier ASP.NET apps and I always wonder if they know where the middle tier is.
In my opinion, the web server is the middle tier and client tier is the browser. Creating another set of machines to host the data layer isn't really necessary and, in fact, hosting the data layer on the web server is easier to scale. We know how to scale out web servers. Inventing a new set of machines forces you to figure out how to scale them out and it does not increase your scalability by scaling out both the web server and a fourth tier.
If you disagree, please e-mail me and let me know what you think.
I hope I am not the only one who missed the magic of CTRL-SHIFT-V. I have bungled about with copy-paste in the editor so many times...I accidently hit CTRL-C instead of CTRL-V and copy an empty line instead of pasting my code...Arg! Now I know to just hit CTRL-SHIFT-V and pick my lost copy from the clipboard ring.
Now its got me wondering what else I have missed. If you have a favorite hidden treasure, could you e-mail at shawn@wildermuth.com and I will post them in an upcoming rant.
After complaining to MS guys for over a year, it seems that they've finally opened up their Visual Studio Integration Program (VSIP). For those of use that have wanted to dig in deeper into VS.NET and fix some of the annoyances, this is great news.
It looks like they've tiered the support (here). With the new Affiliate level support, it allows us shareware/free developers to join the program and get newsgroup level support for free. Thank you Microsoft. This is definitely the right direction.
I ran into this article about using Ink Blots to make passwords on Microsoft Research's site and it got me thinking about security and privacy. I think the only bastion of true privacy these days is in the mind. Social Security #'s, mothers maiden names, pet names...its all just demographic data that is in the wide open. So for the common user, trying to remember a strong password (numbers, letters and punctuation) is just too hard.
Maybe Biometrics are the answer. Fingerprints can't be faked...or can they be? Maybe not by the casual user, but they can be faked. Anyone who got arrested for a petty infraction has their fingerprints in the 'system'.
I think this article is on the right path...passwords based on very private thoughts, not information that is in the open somewhere.
When I saw the recently announcement on MSDN about Quake II in Managed C++ I got very excited. A port to Managed DirectX? Nope...
As the white paper on the project attests, the real magic of the project is an integration of Managed and Unmanaged code. By mixing the Unmanaged Quake II C/C++ code with new Managed code that provides a heads up display, Vertigo Software has proved how well Managed C++ can integrate Managed and Unmanaged code.
What this white paper details is how they ported the Quake II C code to C++ as well as the Managed Extensions. It is well worth a look...
As a primarily .NET Guy, it has been fun watching from sidelines what Sun is
trying to do for Java...
I've wrote a bit of Java here and there, but I could never find an IDE that
was worth a dime. Sun seems to finally trying to address Java's biggest
weakness, development tools. Sure, hardcore Java heads will tell me that I am a
lesser man for not doing everything with the command-line. This thinking is even
permeating .NET lately talks.
Sun has had a ten year head start on .NET. I wish they would have gotten
religion about tools before. This is one thing I give MS a lot of credit for. As
much as I bitch and moan about the IDE's of the last five years, they really
have made me more productive. And that's what it is really about in the long
run.
Don't get me wrong, I don't like to depend on wizard code or designers, but
they do take the tedium out of a lot of development efforts. Back in my youth,
developing windows with the SDK just sucked. No getting around it. Too much time
spent in trial and error. If I never have to hand-edit a .res file again, I will
be a very happy man.
I think Sun developing a good IDE for Java will just increase the competition
between Java and .NET. That's a good thing. I am ultimately a consumer and
competition is good for the consumer.
Throw Borland's hat into the .NET IDE ring and I am a very happy man. Having
MS and Borland fight it out, feature for feature, works for me. I want to write
code...sometimes a lot of code...and the better the development environment, the
more time I get to spend away from the keyboard.