On this page.... RSS 2.0 | Atom 1.0 | CDF
# Friday, November 4, 2005

What the greatest computer ever to be built could not determine (the question for the answer to life, the universe, and everything) is now clear:

What is the revision number of the final release build for the Microsoft .NET Framework Version 2.0?

Friday, November 4, 2005 5:08:51 PM (Eastern Standard Time, UTC-05:00)  #    Disclaimer  |  Comments [1]  | 

Two nights ago on "The Colbert Report" (pronounced "koalbear repoor"), Stephen Colbert, the show's host and star, called Pope Benedict XVI a "nazi pope" while explaining how he's managed to offend many religious groups as part of his 'apology' to the Muslims for claiming that Halloween is a better holiday than Ramadan.  He says that he can call our pope that because "[he's] Catholic."

Not true, Mr. Colbert, not true.  Our pope is not a nazi, and your even saying that in jest is unacceptable.  So I've decided to call for a Catholic crusade to trump the Muslim Fatwa that was called against Mr. Colbert.  Let's take back our pope from those who defame him in public!

Ooooooooeeeeeeeeeeeeeeaaaaaaaaaaaaaaaah!  <-- New anti-Colbert war cry.

Mr. Colbert, if you don't comment on my blog and apologize for your statements, you're a coward!

Friday, November 4, 2005 4:06:01 PM (Eastern Standard Time, UTC-05:00)  #    Disclaimer  |  Comments [3]  | 
# Wednesday, October 26, 2005

It's been a while since my last writing tip, and I just have been doing more editing lately, so I thought I'd toss one more out there.

Vary your sentences!

Okay, I'm just in a yelling mood.  But to elaborate, when writing, you need to think about the feel and flow of your piece as a whole.  This is a somewhat more advanced tip than the tips thus far on this blog (most of the others are just syntactical), but this is stylistic and is, therefore, subject to more interpretation.  That is, it is somewhat subjective.

However, I can assure you that it is still a valid tip to keep in mind.  When you are assembling your sentences, think about how they sound in relation to the surrounding sentences.  Do they all have the same length?  Do they all have the same basic structure?  Do they all have the same pronouns repeatedly?  Do you feel assaulted when reading them together?

Take the last paragraph (just before this one) as an example.  I asked four questions in a row.  Each of them has more or less the same structure and length, and had I asked just a few more, I imagine you would feel somewhat assaulted by the repetition.  As it is, I was hoping to do two things: illustrate the effect you can get by using repetition and actually give you some meaningful questions to ask yourself.

It does illustrate that repetition, when used strategically, can be advantageous to not only get your point across but to do it in such a way that leaves the reader feeling a certain way about your text.  Maybe you do want to assault the reader in classic tommy-gun style.  But my guess is that most of the time you don't; you don't want to assault and therefore isolate your reader because then you lose rapport and they stop listening to what you are saying.

Repetition can also just be dulling.  If you have the same sentence structure over and over again, your reader can become bored and lose interest.  You don't want that, right?  After all, what's the point of writing if you do it in such a way that readers lose interest and just ignore you?

So now for a fun example of repetition.

I got up.  I walked my dog.  I ate some breakfast.  I took my daughter to school.  I drove to work.  I worked a lot.  I came home.  I ate dinner.  I watched the TV.  I went to sleep.

This is of course an extreme example, but we are all guilty of it to varying degrees.  Now I will communicate the same information by varying my sentences.

This morning, I got up.  I walked my dog and decided to eat some breakfast.  After breakfast, I took my daughter to school, and then I drove to work.  I worked a lot.  Later in the day, I returned home, ate dinner, and watched some TV.  And finally, at the end of this full day, I went to sleep.

As you can see (I hope), with a little work you can vary your sentences and make your text more interesting and appealing to your readers.  You can do this by adding adverbs here and there, using dependent clauses, using coordinating conjunctions, eliminating pronoun repetition by combining actions by the same subject into one sentence, etc. 

As an aside, note that I left "I worked a lot" alone.  I did this intentionally to give an effect, to make the reader pause.  The sentence is short and terse amidst longer more complex sentences, and it makes it stand out by stopping the general flow.  You can do this when you want to draw attention to a particular thought.

I'm sure that I haven't done this subject justice, but I hope you will think about it more when writing if you don't already.  And as you incorporate this tip into your writing, you can take it a step further and apply the same rules to paragraphs: vary your paragraphs!  This means not using the same transitional phrases repeatedly, varying their length, etc. 

Forget the "every paragraph must have three sentences" rule if you were taught it.  It's garbage.  The more important thing is that paragraphs communicate a complete thought, so if you can do that and add variation along with it, you're on the road to writing better!

Wednesday, October 26, 2005 1:28:33 PM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [2]  | 
# Tuesday, October 4, 2005

Looks like VB is growing up.  It finally has curly braces thanks to LINQ:

Dim People = {New Person {Age := 42, Name := "Erik"}, _
  New Person {Age := 12, Name := "Wouter" }}

It was only a matter of time until they admitted the power of the curly brace.  MUAHAHAHA! :)

To be more VB-like, I suggest:

Dim People = Begin Anonymous Type _
Begin New Type As Person(Age := 42, Name := "Erik") End New Type, _
Begin New Type As Person(Age := 12, Name := "Wouter") End New Type, _
End Anonymous Type As Anonymous Type

Tuesday, October 4, 2005 2:00:56 PM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [5]  | 

I just ran across this thread on TSS.NET.  I found it somewhat curious that there is a Microsoft guy on there claiming that DLinq is not an ORM.  While I don't doubt there's a way to construe the definition of ORM to make it not true (as the MS guys seems to try), I think that's counterproductive and just plain silly.  As one of the commenters said, it looks and feels like an ORM, so why not just call it that? 

At the MVP Summit, it was confirmed that LINQ will support extensibility into third-party tools via expression trees.  The problem is first that they don't have that stuff documented and second that they plan to change it.  This was gleaned in a session on DLinq where the product team was looking for feedback.  They're very concerned about getting feedback, as Dinesh has illustrated, about DLinq, but I think that they need to first focus on getting their API for extending LINQ (a la expression tree structures and the like) solidified and documented ASAP.

On that note, I've talked to Paul Wilson here at the ASPInsiders Summit about DLinq and the aforementioned blog by Dinesh.  Both of us have written ORMs, and both of us have commented on Dinesh's blog.  However, you'll note, neither of our comments have shown up.  I'm not sure what that's all about, but if you have feedback for the LINQ or DLinq team, you can post it here, and I'll make sure that the related teams are aware of it.  Now is the time to give your feedback on these products as they are early enough in the design cycle and are focused on that feedback.

Tuesday, October 4, 2005 11:23:48 AM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  | 
# Monday, October 3, 2005

I guess since Plip already blogged about it, it's public knowledge now.  We've just heard about this revolutionary technology codenamed "Spang."  Of course, now that the word's out, there are parties within Microsoft trying to deny it.  Oh well, it is too cool, almost as cool as LINQ.

[Edited] It now appears there is a web site dedicated to this new technology...

['Nother Update] It seems that some of my colleagues think that a good clean hoax is somehow a serious issue, so our fun has ended.  Everybody just needs to lighten up!

Monday, October 3, 2005 3:46:17 PM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  | 
# Thursday, September 29, 2005

Since its foundation eight years ago, ASPAlliance has provided articles, reviews, and code snippets targeting ASP and ASP.NET developers. In response to the increasing popularity of .NET and its easing of all kinds of development, ASPAlliance is diversifying to provide content spanning the full range of .NET development, from web to Windows to other devices.

To better signify this change, ASPAlliance is rebranding itself as the Active Software Professional Alliance. We will keep the ASPAlliance moniker, but instead of that indicating a specialty in ASP and ASP.NET topics, it will serve to indicate a more comprehensive resource for software professionals, particularly those interested in Microsoft .NET and related technologies.

So if you've got a hankering to do some technical writing, improve your writing skills through our editorial process, share your knowledge, make a name for yourself, and, to top it all off, make some money, go to our Write for Us page, review our guidelines, and submit an article proposal.  We're looking for articles, book, tool, and component reviews, code snippets, and sample applications that are of interest to .NET developers.  I'd love to see some articles on WCF, WPF, LINQ, or anything you think is really cool and want others to know about. 

Keep in mind that the proposal should be a reflection of your writing skills, so ideally, it will be a thought-provoking summary of what you'd like to write about using your best English.  Take a look at our guidelines to get a better idea of what we're looking for.  I'm looking forward to seeing more great content on ASPAlliance.com, so start thinking and writing.

I'm also always looking for ways in which we can make the reader's experience better.  As noted previously, we have stopped using article paging, we've made many performance enhancements, we've dramatically enhanced and streamlined the editorial process, we've made article submission and compensation better, and now we've broadened our focus to get even more great and interesting content.  But we know we can still improve, so please, email me any suggestions that you have about what you'd like to see from a high-quality .NET developer community site.  Would you like to see forums?  Blogs?  Send me your ideas!

Thursday, September 29, 2005 7:22:55 PM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  | 
# Monday, September 26, 2005

There's some good stuff in the latest edition of MSDN Magazine.  I'm talking about the Memory Models article by Vance Morrison and the new Concurrent Affairs column by Jeffrey Richter.  If you don't have a computer science background, or maybe you do and just need a refresher, these articles will help to get you on track when dealing with some aspects of multithreaded programming.  

Mr. Morrison covers some useful low-lock techniques and offers advice of when to use them.  Mr. Richter covers one way to reduce actual locking and increase performance by not dropping to kernel mode using a spin lock, which Mr. Morrison also mentions.  Both of them do so in the context of .NET, including v2, so even if you're a threading expert, you may pick up some tidbits to be aware of when using .NET v2.

I'm also looking forward to reading Stephen Toub's article on High Availability as it appears to be another good one along the lines of writing high-performing and robust code in .NET.  Kudos to the authors and editors on this edition!

Monday, September 26, 2005 12:19:09 PM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  | 
# Friday, September 16, 2005

I just finished watching the interview with Anders on Channel 9 about LINQ.  This is one of those things that your grandchildren will ask you about--where were you when you first learned about LINQ? 

Obviously, I'm using hyperbole, but I really do think that this is a huge step in the right direction.  I tried to implement something similar (and I say that loosely) with my DataAspects ORM query syntax.  My problem is that I was limiting myself to C# v1.1, so, for instance, I used an instance of the object to be queried as the source for the criteria of the query when getting a collection. 

For instance:

Order criteria = new Order();
criteria.Customer = myCustomer;
OrderCollection oc = new OrderCollection();
DataAspects.DataProcessor.FillCollection(oc, criteria, "GetOrdersByCustomer");

Suprisingly, this worked for a lot of simple cases, but it broke down for any kind of complex criteria so that you had to resort to ADO.NET and passing a data reader into the object collection builder.  But the key for me--the thing I wanted to achieve was to be able to build my query using all the nice features of VC# like type checking and statement completion.

Well, LINQ does that and a whole lot more.  The thing is that they, thankfully, were not limited by C# 1.1 but were able to invent C# 3.0 and .NET FX 2.0.  So they get to invent new keywords, syntax, etc.  Yeah yeah, I know.. the world's smallest fiddle...  But really, I'm just glad that it's here and that I don't have to worry about solving that problem. :)

One thing, though, is that they are going to go the route of attributes on classes to do the mapping (or so it sounded like), which I like (that's how I was doing DataAspects).  We'll see how that pans out.  Of course, they also will have the nice GUI-generated object layer for your database, which is one step above the typed DataSet.  It still doesn't recommend OOD as a application design philosophy, but at least, via mapping, we'll still be able to take advantage of these features that really are plumbing that we shouldn't have to deal with. 

I know there are different strokes for different folks, and there are plenty (probably most MS developers) of devs who like to start with the database for their application design (ugh!).  My own preference is to start with the problem domain and OOD and then worry about persistence later.  I've got an article submitted to CoDe on this topic, but if they don't want to publish it, I'll probably put it up on ASPAlliance or somewhere else.  In any case, LINQ will make OOP much, much easier and provide even stronger practical arguments for using OOD, and for that, I'm very thankful and eagerly looking forward to digging into it myself.

So if you haven't already, go check it out!

Friday, September 16, 2005 5:47:59 PM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  | 

I just ran across a post today by some fella named Nick Hodges who has read the most controversial article I have ever written.  In his blog, as well as in many comments on the article, there seems to be some confusion as to the distinction between normalization in general and normalization using artificial integer keys.  A commenter named Jack on Nick's blog seems to understand this issue best.

In any case, I don't think I need to rehash what I've already said; just read the "Doggie Bag" section of the article to see what I thought readers should take away from the article.  It's very clear from that that I am not opposed to normalization, and in fact I even suggest in the article that there are certainly times where integer keys make a lot of sense.

As for my saying that lookup tables are "part and parcel with the second normal form, if you care about living up to such pedantry," which seems to have really fired up some folks, all I was saying is that I think a lot of insecure programmers try to use "big words" for vainglorious aggrandizement (how's that for big words! <g>) or to bully the lesser-knowledgeable types into agreeing with them.  It is, for example, like my going up to the average church goer and asking them what they think about the soteriological significance of the Christ event.  Most of them would just stare at me blankly, and I could feel very intelligent indeed.

I'm not saying that specialized jargon does not have it's place; quite the contrary, it is a very efficient way to express otherwise verbose ideas to those who are known to understand the meaning of the jargon.  However, if you are dealing with an audience that probably isn't familiar with the jargon, it is pedantry.  And that, friends, is why I said that in the article. 

There are many (maybe most) developers that don't understand the meaning of "second normal form," but they do know that good database design involves using lookup tables to avoid the repetition of data.  They don't need to know what "second normal form" means as long as the get the idea.

So, no, I was not trying to undo the concept of normalization.  In fact, that was only a fleeting mention in the article.  What I was saying, I still stand by.  There are times when it makes more sense not to use artificial integer keys.  If you disagree with that, I'm okay with it.  Just please don't go creating a bunch of straw men and starting rumors... 

Friday, September 16, 2005 5:07:28 PM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [2]  | 
# Tuesday, September 13, 2005

I was just looking at my blog today and noticing some of the ads in my Google AdSense.  There are ads for some 'universal church' and ads for some 'holy bull' blog.  Seems everybody's got a beef to pick with 'organized religion' these days.  It's kind of sad that we organized folks have screwed up so much to make people think that they need to come up with something new, but the idea is actually really, really old.  Gnostics have been around since the beginning of Christianity, each sect claiming some special secret knowledge ('gnosis') that you need to be perfect or what have you.

But we know that when questioned by Pilate, Jesus boldly stated that he had said nothing in private.  His teaching had been on the hillsides, on boats, and anywhere there were people who had an ear to hear.  The very nature of Christianity is the Gospel, which is literally the good news, and Christ instructed us to not keep it hidden but to be like a beacon on a hill and the flavoring of the earth.  Christians should know that there is no secret revelation that they need. 

The Church itself is held to the teachings of the Holy Scriptures and the deposit of the faith, what St. Paul called "the traditions which [we] were taught, whether by word of mouth or by letter." (II Thess. 2:15)  None of this is secret but is plain for everyone to see and hear in the Bible, the Church Fathers, Doctors, catechisms, encyclicals, pastoral letters, and so much more.  There is a public historical and doctrinal record of the Church from the earliest of times; there is an unbroken succession of bishops from the apostles to today.  Just think about it--literally, there is a physical link back to the apostles by the passing on of the ministry by the laying on of hands in ordination.

So I would not get too caught up in these new fangled organizations and individuals who claim to have some special knowledge about God that is all you need.  All of these indirectly depend upon the Church for their knowledge about God and Jesus, and what is in the Bible itself was decided by this same Church.  Without this 'organized religion', we would have no knowledge of God beyond that which the pagans have, which is, as St. Paul said, "written in their hearts."  But that would make the Law of Moses, the Prophets, and the Incarnation of no effect--God revealed himself first through the Law and the Prophets and later by becoming one of us, not only to redeem our human nature but also to make himself better known to us. 

This revealed knowledge of God would be unknown to us without the so-called 'organized religion' so often anathematized today.  So even these who claim we don't need organized religion contradict themselves as they partake of the knowledge of God we have from Revelation afforded by organized religion.

Similarly, I would not be too keen on new organizations claiming to be 'universal', meaning they have no creed or doctrine and 'accept' everyone.  The Catholic Church is universal, not only in name ('catholic' coming from the Greek for 'universal') but also in reality--it stretches to every part of the earth.  It is also accepting of every individual as a human being with dignity, made in the image of God, loved by God, and able to receive the grace God offers through the Sacraments. 

Accepting and loving someone does not mean you have to approve of and love everything that person does.  Somehow this is confused all too often these days, part of the post-modern, relativistic mentality so popular in our culture.  I would suggest that loving someone means more than just hugging them and saying so; it means also that you sincerely want what is best for them and that you will try to help them become the best that they can be.  Sometimes this means letting them know that what they are doing is not the best for them.

So no, no thanks.  I think I'll keep my 'organized' and 'universal' religion.  We may not be perfect, but we are trying to be.  We are trying to grow in love, joy, peace, and the other 'fruits of the Spirit', but it is a process that most of us will not complete until we enter those pearly gates and behold the face of God.  We're not happy to just be as we are--we want to be all that we can be through the grace of God.  Now doesn't that sound better than being alone or simply patting each other on the back all the time while being internally miserable?  I think so...

Tuesday, September 13, 2005 7:59:50 PM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [2]  | 

The Web Platforms and Tools team at Microsoft just went live today with their first public preview of Atlas, which is a server-side API for asynchronous call backs in Javascript to work with ASP.NET 2.0.  Right now, it only works with .NET 2.0 Beta 2, but they intend to follow up soon with a build that works with the PDC bits.

Tuesday, September 13, 2005 11:56:06 AM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  | 

The opinions expressed herein are solely my own personal opinions, founded or unfounded, rational or not, and you can quote me on that.

Thanks to the good folks at dasBlog!

Copyright © 2019 J. Ambrose Little