Friday, October 09, 2009

Foundations of Programming Ebook

I quote:

"I'm excited to finally release the official, and completely free, Foundations of Programming EBook. This essentially contains all 9 Foundation parts including a conclusion and some typical book fluff (table of content, acknowledgement and so on). A number of spelling errors were corrected, along with some small technical changes and clarifications - largely based on feedback, so thanks for everyone who provided it! Otherwise it's exactly the same as what's been posted here over the past several months.
Download it from http://codebetter.com/files/folders/codebetter_downloads/entry179694.aspx

Download the CodeBetter.Canvas Learning Application to see the foundations applied in practice:http://codebetter.com/blogs/karlseguin/archive/2009/09/01/canvas-gets-a-spark.aspx
 Foundations Of Programming

If the above link fails, you can also get it from http://www.openmymind.net/FoundationsOfProgramming.pdf

You can also download the raw .docx file fromhttp://openmymind.net/FoundationsOfProgramming.docx"

200 Page Manual on Inversion of Control (plus or minus 199)

How to IoC in 10 minutes. Ok, realistically this might take a couple of hours, but whatever.

I'll put "dependency injection" here too so the blog search, if it ever gets fixed, will find it.

Wednesday, September 30, 2009

Functional Programming for Everyday .NET Development

From MSDN Magazine, October 2009.

Object Hydrator - .NET test data project

This looks pretty cool. I discovered it through The Morning Brew blog, I think.
"Project Description
This project allows you to pass custom POCO's to it, and have it return an instance of the class populated with randomly generated data.

So basically, you create a class and decorate the property with the name of a Generator you want to use. Pass the object to the Generator and it returns it filled with data. The idea behind it is to use it to replace a database call to use in your UI. "

Thursday, September 24, 2009

Diffuse

Cool new (to me) diff/merge tool. Can merge any arbitrary number of files! How many other diff/merge tools can claim to do that?

Diffuse: "Diffuse is a small and simple text merge tool written in Python. With Diffuse, you can easily merge, edit, and review changes to your code."

Wednesday, September 23, 2009

Why Git?

Why Git? - great article by Ayende @ Rahien, with a very good discussion that follows. Also it's fairly recent -- 19 days ago.

Yet another Git versus Mercurial article

This one's well-written and the comments that follow are not shrill but intelligent. The author claims that Git is like MacGyver, while Mercurial is James Bond. (A commenter claims that Git is more like the A Team, but hey.) One commenter does a great job describing the attitude of the Git community towards Windows users. In a word, contempt. The thing is, I'm a power user who loves Git, and when I first examined it back in the fall of 2007, it just seemed like a better project for Windows. I'm wondering if I should reevaluate.

Tuesday, September 15, 2009

Dotnet Version Wiki

Dotnet Version Wiki: "The original data for this list was taken from Tom Glover's site , where you can download a tool (Free DotNet VersionCheck Utility) that automatically identifies what versions of the framework are installed. Tom kindly donated this existing list to seed this wiki.

Another resource you should be aware of is the CTP Build Finder which is based on some data that Brad Abrams and friends put together into BuildXml.xml . This data file links CTP releases of a few major products, showing compatible products, and is the data source that drives the CTP Build Finder..

Another list of service pack version numbers, Aaron Stebner's WebLog ."

Wednesday, September 02, 2009

How XML Threatens Big Data : Dataspora Blog

How XML Threatens Big Data : Dataspora Blog

Fascinating article. He talks about why XML is philosophically wrong for huge datasets ("Big Data"). I found this article while looking through an HR-XML blog.
"We had a deadline to meet (and, mon dieu, a 35 hour work-week). So we changed course. We hacked our Perl scripts to emit a flat tab-delimited format — “TabML” — which was bulk loaded into Oracle. It wasn’t elegant, but it was fast and it worked.

Yet looking back, I realize that XML was the wrong format from the start. And as I’ll argue here, our unhealthy obsession with XML formats threatens to slow or impede many open data projects, including initiatives like Data.gov.

In the next sections, I discuss how XML fails for Big Data because of its unnatural form, bulk, and complexity. Finally, I generalize to three rules that advocate a more liberal approach to data."

The truth about HR-XML

One guy says it's a bunch of BS. Another guy says it's a fig leaf to cover up for lack of interoperability. Finally, there's a former member of the HR-XML consortium who has some things to say about it.

Here's an older post by the same author: HR-XML Integration in Human Resources Software.

Overview of WCF from Microsoft Developer Network (MSDN)

Overview of WCF -Great article with links to articles on interoperability, which is something I've got to worry about with these legacy web services.

How to: Migrate ASP.NET Web Service Code to the Windows Communication Foundation

How to: Migrate ASP.NET Web Service Code to the Windows Communication Foundation -This is a comprehensive, 19-step procedure that's a bit more detailed than this post and also blessed by Microsoft.

creativeUI - How To: Create a Web Service with WCF

creativeUI - How To: Create a Web Service with WCF -- Seemingly quick and dirty explanation.

Tuesday, September 01, 2009

Converting ASMX to WCF Web Service - Stack Overflow

Converting ASMX to WCF Web Service - Stack Overflow: "I need to upgrade our web services to use WCF instead of ASMX. If the signatures of the web services stays the same, will existing clients that already call the ASMX service have to change anything on their end? Is there anyway to still use WCF but not force them to change anything?"

The answer is simple. I tried it and it worked. I did have to change the server binding config to be the custom binding created by svcutil.exe. But since that utility creates the configuration, it's basically a cut-and-paste job.

Friday, August 21, 2009

Configuring AnkhSVN revisited

Turns out they got rid of the Tools/AnkhSVN menu option. It's now integrated all over the place. The configuration I was looking for is in Tools/Options/Source Control. Never mind that I spent several hours hunting down the configuration by reading source code. Arg!

Thursday, August 20, 2009

Configuring AnkhSVN 2.1.7141.181 when the configuration dialog does not appear in Visual Studio

For some reason my Visual Studio does not display a menu option to configure AnkhSVN 2.1.7141.181, so below are the registry settings to configure it to use TortoiseSVN. But first, a list of the settings.

Setting NameDescription
MergeExePathPath of the executable used for merging, including all arguments.
DiffExePathPath of the executable used for diffing two files, including all arguments.
PatchExePathPath of the executable used for applying a patch, including all arguments.
InteractiveMergeOnConflictIf true, launch an interactive merge on a conflict. Default value is false.
FlashWindowWhenOperationCompletesIf true, window flashes when operation completes. Default value is false.
AutoAddEnabledIf true, new project files are automatically marked for adding to Subversion. Default value is false.

Following is a .reg file containing registry settings to use TortoiseMerge for all diff, merge, and patch operations:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\AnkhSVN\AnkhSVN\VisualStudio\8.0\Configuration]
"DiffExePath"="$(HostProgramFiles)\\TortoiseSVN\\bin\\TortoiseMerge.exe /base:\"$(Base)\" /mine:\"$(Mine)\" /basename:\"$(BaseName)\" /minename:\"$(MineName)\""
"PatchExePath"="$(HostProgramFiles)\\TortoiseSVN\\bin\\TortoiseMerge.exe /diff:\"$(PatchFile)\" /patchpath:\"$(ApplyToDir)\""
"MergeExePath"="$(HostProgramFiles)\\TortoiseSVN\\bin\\TortoiseMerge.exe /base:\"$(Base)\" /theirs:\"$(Theirs)\" /mine:\"$(Mine)\" /merged:\"$(Merged)\" /basename:\"$(BaseName)\" /theirsname:\"$(TheirsName)\" /minename:\"$(MineName)\" /mergedname:\"$(MergedName)\""

[HKEY_CURRENT_USER\Software\AnkhSVN\AnkhSVN\VisualStudio\9.0\Configuration]
"DiffExePath"="$(HostProgramFiles)\\TortoiseSVN\\bin\\TortoiseMerge.exe /base:\"$(Base)\" /mine:\"$(Mine)\" /basename:\"$(BaseName)\" /minename:\"$(MineName)\""
"PatchExePath"="$(HostProgramFiles)\\TortoiseSVN\\bin\\TortoiseMerge.exe /diff:\"$(PatchFile)\" /patchpath:\"$(ApplyToDir)\""
"MergeExePath"="$(HostProgramFiles)\\TortoiseSVN\\bin\\TortoiseMerge.exe /base:\"$(Base)\" /theirs:\"$(Theirs)\" /mine:\"$(Mine)\" /merged:\"$(Merged)\" /basename:\"$(BaseName)\" /theirsname:\"$(TheirsName)\" /minename:\"$(MineName)\" /mergedname:\"$(MergedName)\""

Here is the file AnkhDiff.Tools.cs that contains all the settings. Look for the functions GetDiffToolTemplates(), GetMergeToolTemplates(), and GetPatchToolTemplates().

When putting these into the registry by hand, make sure to change all single quote with a double quote. (There must be code in AnkhSVN that already does this.)

5 ways to answer managers' unfair software test, QA questions

5 ways to answer managers' unfair software test, QA questions: "About 20 years ago Tom DeMarco defined the unfair software question with his article, Why does software cost so much?. DeMarco claims it is not a question at all, but an assertion or a negotiating tactic. These questions also come up in software testing. Here are a few of my favorites:
'Why didn't QA find that bug?'
'Why is QA always the bottleneck?'
'Why do we have so many bugs?'
'What can we do to improve throughput from QA?'
'Are we done testing yet?'

Taken at face value, these may appear to be fair questions. But let's look at the assertions that are hidden inside of them:

'QA should have found that bug.'
'QA is the bottleneck.'
'We have too many bugs.'
'Testing is taking too long.'
'Testing should be finished by now.'"

Sunday, August 16, 2009

Can't connect to F5 Firepass using OneCare

This was really irritating until a coworker mentioned that he couldn't connect with OneCare. All my previous Google searching was for naught.
"I found a solution that worked for me. In One Care, select Change Settings. This will open the Windows Live OneCare Firewall Advanced Settings. Select Ports and protocols tab. Then, select Add... this will open the POrt and Protocol Information page. Enter a Name in the Name text box. I entered "F5 VPN Port". Select TCP from the TCP or UDP drop down control. For port range, enter: 44444 to 44444. For the Connections, select: Outbound. For Scope, select Internet."

Wednesday, August 12, 2009

How to create a global error handler for your application

From Microsoft. Reminds me to include things like Request.Form and Request.QueryString in the log. Interestingly, they also include Exception.TargetSite and Exception.Source, which I hadn't considered before. Both might be useful.

Tuesday, August 04, 2009

10 best practices for successful project management | 10 Things | TechRepublic.com

10 best practices for successful project management 10 Things TechRepublic.com: "Given the high rate of project failures, you might think that companies would be happy to just have their project finish with some degree of success. That’s not the case. Despite the odds, organizations expect projects to be completed faster, cheaper, and better. The only way that these objectives can be met is through the use of effective project management processes and techniques. This list outlines the major phases of managing a project and discusses key steps for each one."