.NET news from the frontlines - RSS Orange : RSS Feeds

.NET news from the frontlines - RSS Orange : RSS Feeds
RSS Orange : Aggregation & Syndication of RSS Feeds
RSS Orange aggregates website & blog RSS feeds, then syndicates the collective feeds within their relevant category. Adding your website or blog gives non reciprocal exposure of your content, as well as further syndication via external rss feed sites and readers.
Home | Most Popular RSS Feeds | Newest RSS Feeds | Submit Your RSS Feed | Subscribe to RSS Feeds Subscribe to RSS Feeds from RSS Orange
RSS Feed Categories
.NET
Advertising & Marketing
Africa
Americas
Art & Writing
Articles & Tutorials
Asia
Australia
Automobile
C/C++
CA
Cisco
Computers
Construction
Developer News
Europe
Finance
Foods & Beverages
Fun & Entertainment
Games
General
Hardware & PDA
Health
Human Resources
IBM
Internet
Java
Legal
Locals
Media
Microsoft
Moreover
News & Opportunities
NewsForSites
NewsIsFree
Real Estate
Science & Education
Security
Shopping
Social Networking
Society
Software
Sports
SQL & databases
Sun
Telecom & Wireless
Thoughts & Comments
Travel
UK
US
Virtual Worlds
Web Development
World
 
Recommended sites

Search the Web
Public Service Announcements
Find out about 419, advance fee, lottery and other email scams.
Free Online Dating.

Site Stats
Most Popular Searches
news right now Developer News news Feed digital asset management software making money online business opportunity Second Life Blog making money online opportunity rss feed software florida mortgage loan acne information free google ads home improvement loan Web Marketing business loans making money ideas hydraulic press home loan tsunami rickenbacker debt management credit card debt search engine subprime mortgage fireproof file cabinets loans ducati making money loan payday 12 month millionaire

Search Feeds

.NET news from the frontlines
RSS Feed URL : http://blogs.geekdojo.net/mainfeed.aspx
Category : .NET
Total Views : 44
Latest entries from this feed url
This Blog Has Moved!
I have started blogging once again.... However, I have moved my blog to my own server and changed over to the WordPress bloging engine.  You can find my new blog @ http://ray.jez.net/



SQL Server 2008 is finally here !!!
go and get it off your MSDN.

Disorderly Views

In SQL Server 2005, if you create a view utilizing the TOP (100) PERCENT and ORDER BY clauses, you will not get back your results in the order specified.

Example:

USE AdventureWorks
GO
CREATE VIEW CustomersOrderedbyTerritory
AS
SELECT TOP
(100) PERCENT * FROM Sales.Customer
ORDER BY TerritoryID
GO
SELECT * FROM customersOrderedbyTerritory

You will notice that SELECTing from this view returns  a result set 'ignorant' of the ORDER BY directive. In essence, the optimizer ignores the TOP and ORDER BY clauses.  To achieve the desired result, there is a hot fix available from MSFT which introduces trace flag 168 and also requires you set the database compatibility level to 80 (SQL Server 2000).

Apparently, the problem also extends to Common Table Expressions (CTE) which use the same constructs such as :

WITH territorialcustomers AS
(
SELECT TOP(100) PERCENT * FROM Sales.Customer
ORDER BY TerritoryID
)
SELECT * FROM territorialcustomers

If you don't want to set your compatibility level to 80, you can use TOP (99.999999999999) instead. This somehow fools the optimizer to sort the data the way you want it to. Of course, it is only useful if your table contains less than 10 million records since the 0.000000000001% difference may start to show.

Well, if you insist on using the view, you can avoid the hot fix by using the ORDER BY clause in a table-valued function to retrieve your ordered data .  You can then wrap your view around this UDF.

I have not checked if this behavior has been carried forward to SQL Server 2008.


Lessons From The Trenches

A substantial part of my development career was spent on the assembly line churning out code based on someone else specifications. There was always somebody else to handle the financial, administrative, marketing and sales aspects of  the whole manufacturing process - what I used to call the 'social' face of software. Now that I am running my own small software outfit and having gone through a few projects, the lessons seem to be coming my way fast and hard on a daily basis. Most of them are the 'social' kind and I will proceed to randomly throw them at you, mainly because I don't want to forget them.

  1. Document all proposed requirements (features) to the most atomic level of detail possible. Ambiguous or general statements can fool you into optimism as far as the project timeline and budget is concerned. A specification statement like "The new system should allow employees to view their own data currently stored in the HR management system oracle database" cannot be the basis of a design. Break it down with questions like this:
    • Allow - May suggest security concerns. Will this be integrated security (implicit) or forms-based (explicit)?. Is there some form of identity management in place? Will we have to log (keep track) access to the system somewhere?
    • Employees - How many? Where are they located? Will each computer need some form of installation or setup procedure before using the system?
    • View - Where is the viewpoint? i.e. can the employee view the data while outside the LAN. What will they use to view the data? i.e a browser, a Windows forms application through a VPN? Do we need to encrypt the data? What obstacles lie between the user and the data? Firewalls,
    • Own - Are there people who can view other peoples' data? Who manages all these permissions?
    • Data - Which data exactly? i.e. Salaries, leave (vacation), loans, employment history (vertical and horizontal movement within the firm). How should each be displayed?
    • Oracle - Which version? Oracle client software installation? Who is responsible for this other database? Will they help with scripts to get the data out? Will we be allowed access to some of the data during development? Silently:(Do we have skills to deal with PL/SQL and ADO.NET?). Any documentation available?
    • If most of the above questions can be answered satisfactorily by the client, you may be able to do a better estimate than just a '1 man-week' guess. In fact, you might realize that this could very easily end up at slightly more than '1 man-month'. Remember that I am talking about one requirements specification statement.  
    • You might, of course, want to wear the 'architects' hat and start thinking of performance, availability, scalability, extensibility and interoperability at the statement level. These thoughts will not reduce the value of your requirements and may uncover other concerns and wishes not previously stated.
  2. Communicate anything involving an agreed or suggested flux in resources and system features in writing (e-mail) as much as possible. Copy (cc) the communication to all the people relevant to that part of the project. After meetings, e-mail the client highlighting the main points agreed or disagreed during that meeting and ask for confirmation. You may look dumb and slow but this will cover your bases and avoid any ambiguity or disputes later.
  3. Perform user acceptance testing as early as sanely possible. Unit and functional tests can be greatly complemented by the almost natural ability of a user to always crash a system. The fact that the software is incomplete only serves to gauge your feature prioritization skills. This could be a better indicator of where the project status instead of just checking off a feature list in a garage or on an Ms Project gantt chart. In any case, a client nod is worth more than any test case scenarios you can cook up. 
  4. Demarcate or at least try to understand the boundary between the user and the client. These two entities are important to the closure of the project. The client will pay for the software. Users will use your software as often as necessary. Users will certify your system. The client may not pay if the user is not happy. Your will be supporting users later - despite what the contract says. When the client is the user, you may have an easier job navigating through the acceptance and invoicing phases. If they are not , get a good project liaison to grease the path between them.
  5. Listen to all levels of the user spectrum. Every data entry and retrieval scenario should have a 'persona' and a real blood-and-bones user early in the project. Different people have different views of design. You may be able to merge these different views with your own or even learn something new. Not listening creates room for assumptions. Assumptions can spawn undefined elasticity in resources and features. Listening later only serves to widen the delicate gap between project initiation and final invoicing.
  6. Know the accounting practices and procedures of the client. What they may consider fast payment processing may be too slow for you. Your bills and obligations may not dance to the same tune as your clients' workflow and traditions. This will also allow you to plan for cash flow.  
  7. If you can, start creating user documentation (help files) early. Consider this as a validation of the requirements and testing activities. This also brings the end game nearer.
  8. If there is a training clause in the contract, make sure the scope is clear. You may find yourself teaching PC skills, database administration, active directory services or even VB.NET for free or at a lower price than you would have if it was stated clearly from the beginning.
  9. If you can help it, get somebody who knows their way around the establishment and has a goodwill for the project as a liaison. Canceled or missed appointments with various people, internal events or staff deployment changes in the client firm can affect your ship date. You may also need help bullying the accounts people - they usually respond better to internal pressure and nagging. A good rapport with the internal IT team can be good for repeat or referential business. It might just help to reduce your medical bills as you struggle to deploy your new software.
  10. It may be that you got the job through a competitive process (a.k.a tender). Make sure you get to know why you won/lost the bid and what your competition had to offer in their technical and financial proposals. There will always be a next time and it is very likely that you will meet your competitors again. Such knowledge can only serve to improve your chances. 
  11. In case you were wondering, I have little to say about software maintenance contracts. You will not need to do much if the agreement (SLA) is clear and your software approximates the elusive zero-bug state. On the other hand, it is very easy to spend all your money 'maintaining' the software as you respond to every user SOS and hunt down all kinds of bugs.

Whether my experiences are out of place is subject to the test of time and the pressure of future projects. In the meantime, they will serve as a reminder that the world is still interesting outside the confines of Visual Studio and the SQL Server query editor.


Running for President
The rumors are true... I'm running for President :


;-)


How to set the default size and layout of all Windows Explorer windows.

Do you routinely open new folders directly, either because you created one on your desktop, through a shortcut, or by using the new context menu in Visual Studio to explore the folders in your solution? Are you constantly adjusting the size of the Explorer windows because they are too large or too small for your tastes? Do you wonder why Vista does not just remember and open all windows at the same size?

Vista stores settings such as size, location, sort type, icon type, etc… for individual folders you open. Some of these settings can be replicated to other folders using Folder Options / View / Apply to Folders, but that method is not very reliable and no longer applies to all folders as it did in previous versions of Windows.  Vista can still later decide that your documents folder is suddenly a music folder, or your apps folder full of only executables is now a picture folder.

There are some registry settings you can apply that will take care of most of theses issues, except window sizes. I first discovered the settings through a link in the comments on Scott Hanselman's post about Vista’s erratic file type views. Later, after I purchased a new laptop I came across a better explanation on the My Digital Life blog. If you are looking for a way to fix this behavior, I would suggest going there first as this fix is an expanded version of it and requires those steps. Come back here before you open any new windows though. Go ahead… I’ll keep myself busy.

Ok, now that you have completed those steps, we can get that pesky window size issue fixed.

First, right click on your desktop and choose New / Folder.

Next, double click the new folder and drag it out or in to your preferred size. You can also set other properties of the window you want to be the default at this point. For instance, I like by default window view to be details view grouped by the type of item. The folder is empty so you will not see any sorting or grouping, but it will be saved.

Close the window and open the registry editor, type regedit.exe in the quick search bar of the start menu.

Important, The next steps involve editing your registry. The standard disclaimer applies. You can cause serious problems if you are not careful in the registry. Follow these steps though and your computer will survive.

Navigate back to the registry key:

[HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags\.

You should see a single numbered key under the Bags key. That key represents the settings for the folder you just closed. Open the ‘Shell’ key beneath it and you should see another key with a guid name such as ‘{5C4F28B5-F869-4E84-8E60-F11DB97C5CC7}’. The numbers may be different on your system.

Right click the guid key and choose export. Save the file to your desktop. Use any name you like.

Now that you have a new registry settings file on your desktop, right click the file and choose Edit. You need to make a single change. The second line in the file will be the path in the registry, it will look like:

[HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags\4\Shell\{5C4F28B5-F869-4E84-8E60-F11DB97C5CC7}]. 

The piece that needs to be changed is the number after the ‘Bags’ key. In this case it is 4, but your file may be different. Change the number to ‘AllFolders’ so that the line looks like:

[HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags\AllFolders\Shell\{5C4F28B5-F869-4E84-8E60-F11DB97C5CC7}].

Save and close the registry settings file. Now to get these settings back into the registry, double click the file and choose ok at the prompt.

Open any folder on your computer and it will look exactly like your first folder. You will need to reset any special folder views you had, such as picture folders. You can do that in two ways. Click the ‘Views’ button at the top of any window or right click in a window and choose ‘Customize This Folder’. Once you have made your change, close the window and Windows will remember the setting for that folder.


My first attempt to use the Cuil search engine

I just gave this new search engine a try.  It's called  Cuil (pronounce "Cool")  and its the invention of former Google engineer Anna Patterson.

Here's a pic:

 

 


This Blog has moved

Please update your readers! Ryan Rinaldi: .NET development served with a slice of sarcasm. (RSS)

 


Microsoft .NET Framework 3.5 Service pack 1 Beta

Here's the link to the beta, go and get it:

Microsoft .NET Framework 3.5 Service pack 1 Beta


GeekFest 2008

Like last year, I'm heading out to the MVP Summit in Redmond.  Here's some information on the event:

The upcoming summit, April 14-17, will feature a keynote from Microsoft CEO Steve Ballmer and closing by Chief Software Architect Ray Ozzie, in addition to several sessions, including topics ranging from social media for peer-to-peer support to new developments such as Silverlight mobile to Skydrive. Nearly 1,800 MVPs are planning to attend.

In conjunction with the summit, the Code Trip (www.thecodetrip.com), which launched from MIX and has been traveling around the western U.S., is an RV housed with Microsoft developer evangelists spreading the word about new technologies and meeting MVPs at each stop. The final destination of the 21 city trip is the MVP summit.


Looks like i lied....
When I said I wouldn't post here anymore.

The truth is that my men-talhealth website is still a good idea but I don't have enough material to post there consistently. Also, I like writing tech stuff - I now just have a different agenda to before.

That in mind, I'm going to launch a new blog where I can blog about anything and everything I like. I'll post the URL when it's ready

C# 3.0: Invoke On WinForm Conrols easily with Lambda expressions (or anonymous methods)

I really like Extension methods... especially when you combine them with other good language bits to really make a difficult problem a lot easier.  I think invoking on Windows Forms applications is one of those problems that is elegantly solved by some of these new features.  For an in-depth background on the 'whys' and details of having to use Invoke to access GUI elements from other threads in your windows forms applications, see this article

I have always found stopping to Invoke something to be a bit of a pain -  just enough effort to derail my train of thought while working on a WinForms applications.  So back in the 1.1 days, I created some helper code to try to smooth this process out a bit.  On method to help out invoke was called like this:

string value = InvokeHelper.GetProperty(myTextBox, "Text");

This was an improvement on invoking without help, but essentially all I was doing was wrapping some reflection calls to coax the value from the Text property.

Now, with extention methods, lambda expressions and the ability of the compiler to infer the resolution of generic type parameters to actual types, I was able to refactor many helper methods (variations on the above for getting and setting properties, fields, calling methods, and their overloads into two methods, this is the first:

public static TResult Invoke<T, TResult>(this T controlToInvokeOn, Func<TResult> code) where T : Control
{
   if (controlToInvokeOn.InvokeRequired)
   {
    return (TResult)controlToInvokeOn.Invoke(code);
   }
   else
   {
    return (TResult)code();
   }
}

This handles the majority of cases where I wish to invoke in WinForms, it's available on all Control instanced (though I usually just invoke on the main Form instance where the controls I want to touch are) and it works without having to specifiy the return type (or where there are no return types *except in cases where the Func code isn't an expression... see below for the second method/case).

The other method is this:

public static void Invoke(this Control controlToInvokeOn, Func code)
{
    if (controlToInvokeOn.InvokeRequired)
    {
       controlToInvokeOn.Invoke(code);
    }
    else
    {
       code();
    }
}

This method has some overlap with the previous method, but its exclusive territory is cases where you pass something to the 'code' parameter that *isn't* an expression.  In this overload, you are passing in a delegate defined as public delegate void Func() (which is not included in the framework, I just made it up though I could have easily used the ThreadStart delegate -- hmm, maybe I should have, oh well :)).  This can be a multi-step method that includes locals etc. just like any anonymous method would.  The first overload of Invoke would require you to return something at the end of your method, which I thought was ugly, so I added this second method for 'code aesthetic' purposes.

[Edit] One obvious thing I left out (you can tell I haven't blogged much recently) is is just the syntax of how this is called.  Inside a Form (this), you call the method like so (in this case, setting a value on a control on the UI thread):

this.Invoke(() => progressBar1.Value = i);

This gives you easier syntax than the out of the box invoke, and only invokes if it needs to.

Returning a value from a property is pretty easy, too:

string value = this.Invoke(() => button1.Text);

The return type is resolved implicitly so you never need to cast and normally shouldn't need to explicitly supply it.

Anyway, I would like to improve this if I can.  One question: is it wrong to overload the 'Invoke' method?  If yes, what name should these methods have?  Any other comments or questions are welcomel

Here's the code:
DemonstrateInvokeViaLambdas.zip

 

 


Butting Heads with the Head Buts: Innovation and Generic Implementations

I'd like to coin a new word, genericization, mostly because it's fun to say, but it's hard not to go back and try and correct that red squiggly line. Anyway, I didn't really want to talk about new words and automatic spell-checking. What I really want to expound upon is all this talk about innovation and how it occurs in the software development space.

Where I'm currently working, they have some weird calculation involving revenue and GP to measure innovation. I'm not, to be sure, exactly up on all the conceptual math behind it.... At any rate, the prevailing concept amongst the operational and business folks is that innovation should be done on the client's dime. Furthermore, such innovation should always be genericizable, i.e., applicable across all clients. What, apparently, gets lost in translation, is that converting a concept into a software-based process, given a reasonable set of requirements and under an always aggressive timeline, is a shaky proposition anyway. To expect development teams, especially immature or relatively new and unschooled teams, to think generically when they're feverishly working to implement specifically is akin to trying to find something that resembles a pin to stick back into the grenade...

And, of course, when that grenade explodes, all the buts start:

  • "But why can't that whatchamacallit be used on my program?"
  • "But you made that generic, why do I have to pay for customization?"
  • "But I need it to work this way."

What I think most of the business folks aren't realizing is that they are the ones who own the domain. They own the concepts. Of course, translating the conceptual into the physical is one of the roles the architect plays. If you are the architect and you're heads down on specific delivery, i.e., client work,  you'll never have the chance to look around and truly learn the breadth and depth of a particular domain. Therefore, you'll rarely ever be able conceptualize it into something generic. And, you'll just be stuck re-inventing the wheel over and over.


Quotes - Thomas Jefferson

"The God who gave us life, gave us liberty at the same time;
the hand of force may destroy, but cannot disjoin them."

- Thomas Jefferson

What's “Nu” in MS '08 Technology - Chicago, New York and Denver

My company Neudesic will once again be hosting NuCon, a deep dive conference into .Net 3.5 and Visual Studio 2008 including LINQ, ADO.Net 3.5, Silverlight and TFS. Microsoft's new IO model (Infrastructure Optimization) will also be covered in one of the tracks.

This year the conferences will take place in Chicago, New York, and Denver starting on February 7th in Chicago.

Space is limited. Get more info and sign up at the NuCon 08 conference site.

 


Something We Already All Know - "It's All About the Data"

Here's an absolutely fascinating article, by Noreen Kendle, regarding the philosophy of data. This is a must read for anyone who has to deal with data from a data warehousing perspective.

Ms. Kendle tackles the philosophy of data from an oft neglected, yet vital, viewpoint. She acknowledges that the "ultimate goal of data is to provide useful, accurate information in support of knowledge, as knowledge is power." Ms. Kendle then immediately goes on to assert that "the usefulness of data is directly dependent on the accuracy of its alignment to reality." So, in these two sentences, she has captured the essence of Data Warehousing. Data must be of the highest quality possible so as to provide the best answers available.

I would highly recommend that, if you are interested in Data Warehousing, or even just dealing with data in general, that you peruse and savor this little gem. As Ms. Kendle reminds us: "'If that data isn't right, nothing is.' There cannot be a truer statement."


"Tagged:" Book List

Technically, I guess, this counts, since I do read it....

01. One book that changed your life
Changed my life? That's a tall order...Mere Christianity


02. One book that you’ve read more than once
There are too many, but I'll go with this: Lord of the Rings (all 3...several times)

03. One book you’d want on a desert island
My bible...(and maybe this one.)

04. Two books that made you laugh
Searching for God Knows What & Blue Like Jazz

05. One book that made you cry
Lifestories

06. One book that you wish had been written
The Pursuit of God

07. One book that you wish had never been written
I honestly can't think of one.

08. Two books you’re currently reading
The Cost of Discipleship & That Hideous Strength

09. One book you’ve been meaning to read
Only one? How Now Shall We Live

10. Now tag 3 people:
I'll go with what Margie said...I'm not sure who (if anyone) reads this, so, if you do, consider yourself tagged. Leave a comment with a link to your book list post...


If you're not laughing when you're done reading,

then you're not a programmer with relatives... (from the Daily WTF):

Best of the Sidebar- Could You Explain Programming Please


Quotes - John Adams

"It should be your care, therefore, and mine, to elevate the
minds of our children and exalt their courage; to accelerate and
animate their industry and activity; to excite in them an habitual
contempt of meanness, abhorrence of injustice and inhumanity, and
an ambition to excel in every capacity, faculty, and virtue. If
we suffer their minds to grovel and creep in infancy, they will
grovel all their lives."

-- John Adams (Dissertation on the Canon and Feudal Law, 1756)

 

>>> Proverbs 22:6 Train a child in the way he should go,
       and when he is old he will not turn from it.


The Dark Knight trailer

Once again, Batman as he ought to be...


VS2008 Hands-on Lab Nuggets

A - Got a chance to play with HALO 3 in the lobby. Wow. Makes me want to get a box.

1 - WCF is the communication platform for Microsoft for the next 10 years at least (right out of the Microsoft mouth)

That means that Remoting, ASMX, etc. are all legacy technologies...

2 - 2.0, 3.0, and 3.5 runtimes are all the same. They just provide new features in the later versions.

VS2008 will allow you to target specific runtime "versions."

3 - Windows Service hosting for WCF is the most performant - "as close to the metal as we can get"

4 - API First feel for WCF as opposed to Contract First

5 - Labs that don't work right, suck eggs.


Being FAT can make life difficult

So, I screwed up. I brought my external HDD to a VS2008 Hands-on Lab thinking it would be helpful...and it was!

The Lab was overbooked, and there weren't enough Microsoft supplied HDDs to go around. So, in my infinite wisdom, I said, that's ok, let's just copy everything over to my external HDD, and the other guy can have the MS supplied one. 30 minutes later, the copy fails. The virtual image won't transfer because, apparently, it can't fit it's measly 14Gb into the 210Gb of free space on my HDD. Well, it turns out that I was a little too excited when I got my external HDD, and I started using it without checking the format. Sure enough, the external HDD is formatted as FAT32 rather than NTFS. Who knew?

Luckily, the guy running the Lab, Jeff Brand, figured it out almost immediately. More importantly, he was kind enough to transfer all the files off the external HDD, format it as NTFS for me, and copy everything back on. Thanks, Microsoft, for keeping from being FAT.


MSCONFIG on Steroids

Just ran across this little gem: Autoruns


Quotes - Johnny Cash

"I love the freedoms we got in this country. I appreciate your freedom to burn your flag if you want to, but I really appreciate my right to bear arms so I can shoot ya if you try to burn mine." - Johnny Cash


My Black Friday Finds

I've been looking high and low for this toy for my niece the last several weeks.  It turns out that I've was looking in places that definitely weren't going to have it.  Fischer Price finally confirmed on their web site that the "Little Einstein pat pat Rocket" is only available at Target stores so that eliminated the need to search Toy R Us or Wal Mart anymore.

Though I hate to admit it, I did participate in the Black Friday hoopla.  I started out at the new local Target where I came up empty handed for the "pat pat Rocket".  I decided to continue my quest for this item at other another Target location.  While at the second location I found a helpful sales assistant who was kind enough to check their inventory for the item.  She told me "it looks like they might have one in the back",  ten minutes later she comes out with two of them.   Success!, rolling out of bed early Friday morning had paid off. 

Later in the day I got online and picked up and Toshiba HD-A3 HD DVD player for my parents.  It plays HD DVDs and up converts regular DVD as well.

On Saturday I found myself a 80GB Zune at the local Wal Mart.  This was really unexpected since they are in very short supply right now.  The Zune 80 is very similar to my current first generation Zune 30 (with the 2.0 firmware upgrade).  There are a couple of differences though, first the form factor is about half the size of the Zune 30. secondly the screen on the Zune 80 is bigger, and lastly  the Zune 80 has 80gb of storage.  Currently my Zune 30 is full so I had no room for movies or pictures.  The new Zune 80 gives me plenty of "head room" even with my pictures and movies loaded on the device.



 

  |   Check PageRank   rssorange.com | © 2008 | Sat, 11 Oct 2008