This is just a spot to keep miscellaneous links. It also shows you what a geek I am.
Friday, January 21, 2011
How To Use Amazon EC2 as Your Desktop - RestBackup™ Blog
Scott Hanselman - Link Rollup: New Documentation and Tutorials from Web Platform and Tools
Scott Hanselman and Rick Anderson collaboration and Mike Pope (Editor)
Both C# and VB versions:
- Intro to ASP.NET MVC 3
- Adding a Controller
- Adding a View
- Entity Framework Code-First Development
- Accessing your Model's Data from a Controller
- Adding a Create Method and Create View
- Adding Validation to the Model
- Adding a New Field to the Movie Model and Table
- Implementing Edit, Details and Delete
- Source code for this series"
Michael C. Kennedy's Weblog - 11 Killer Open Source Projects I Found with NuGet
Wednesday, January 19, 2011 5:18:17 PM (Pacific Standard Time, UTC-08:00)
So maybe I'm late to the party, but I recently started playing with NuGet. It's a killer new way to find, install, maintain, and manage references to open source libraries in Visual Studio 2010. Plenty of people have written about it (Phil Haack and Scott Hanselman for example). Let's just say you should learn about NuGet if you don't know it already.
What I want to talk about is all the cool open source projects I found just by flipping through the pages of the NuGet directory in the Visual Studio 'Add Library Package Reference' dialog."
Monday, December 27, 2010
Kill That Util Class!
Saturday, December 11, 2010
The protocol-relative URL
<img src="//domain.com/img/logo.png">If the browser is viewing that current page in through HTTPS, then it'll request that asset with the HTTPS protocol, otherwise it'll typically* request it with HTTP. This prevents that awful "This Page Contains Both Secure and Non-Secure Items" error message in IE, keeping all your asset requests within the same protocol."
Thursday, December 09, 2010
Algorithmia Source Code released on CodePlex - Frans Bouma's blog
The undo/redo looks intriguing.
Saturday, December 04, 2010
CODE Magazine - Article: Behavior-Driven Development
Wednesday, November 24, 2010
Naïve Bayesian Classification Using C# and ASP.NET
To understand and code for the na ve Bayesian algorithm, we will do some math to understand the procedure. The primary equation for the Bayes rule is:
P(A|B) = (P(B|A) * P(A)) / P(B)"
There's also this: http://nbayes.codeplex.com/
and this: Inference in Belief Networks - CodeProject
InfoQ: Testing Techniques for Applications With Zero Tests
InfoQ: How To Do Large Scale Refactoring
Tuesday, November 23, 2010
InfoQ: Fulfilling the Promise of MVC
Monday, November 22, 2010
So You Want to Interview for a Senior Developer Position…. « If & Else
Saturday, November 20, 2010
10 Steps To Become Better .NET Developer - Blog - CQRS and Cloud Computing
Friday, November 12, 2010
Thursday, November 11, 2010
Jurassic - A Javascript Compiler for .NET
Jurassic is an implementation of the ECMAScript language and runtime. It aims to provide the best performing and most standards-compliant implementation of JavaScript for .NET. Jurassic is not intended for end-users; instead it is intended to be integrated into .NET programs. If you are the author of a .NET program, you can use Jurassic to compile and execute JavaScript code.
Features
- Supports all ECMAScript 3 and ECMAScript 5 functionality
- Simple yet powerful API
- Compiles JavaScript into .NET bytecode (CIL); not an interpreter
- Deployed as a single .NET assembly (no native code)
- Basic support for integrated debugging within Visual Studio
- Uses light-weight code generation, so generated code is fully garbage collected"
Wednesday, November 10, 2010
Building iPhone Apps with HTML, CSS, and JavaScript
Monday, November 08, 2010
Scrum Alliance - New to User Stories?Written for the Scrum Alliance. A CSP’s perspective on user stories, requirements, and use cases
Sunday, November 07, 2010
Ultimate Guide to Website Wireframing
Saturday, November 06, 2010
Git Source Control Provider
FsCheck: A random testing framework
Wednesday, November 03, 2010
Saturday, October 23, 2010
Test with Windows Live Writer
Everyone is telling me that this tool is really the cat’s meow. So far – about 20 words into it – it’s really not half bad.
Let’s insert a photograph, even though this blog isn’t so much of a blog as a glorified collection of bookmarks.
Hmmm, kinda cool!
I wonder if this would work with ScrewTurn Wiki? (Although I would tend to doubt it, but you never know.)
Saturday, October 16, 2010
A few thoughts on jQuery templating with jQuery.tmpl | Encosia
Overall, jQuery.tmpl is a great step in the right direction. It’s small, it’s simple, and it’s fast. Overloading append() to allow the append(Template, Data) syntax is phenomenal. That approach feels more like idiomatic jQuery than anything else I’ve used, including jTemplates."
Monday, October 11, 2010
Teach Visual Studio Your Own Language -�Easy! - Journal - Rinat Abdullin
BDD, Fluent Interface Generator, and a new .NET 3.5 Parser generator
Tuesday, October 05, 2010
Javascript Libraries and ASP.NET: A Guide to jQuery, AJAX and Microsoft - Articles - MIX Online
NET jQuery Extensions at GitHub
Highlights include:
"Templating – Previously referred to as jQuery.tmpl or jQuery-tmpl, the jQuery Templating feature was Microsoft’s first foray into working with the jQuery team and community. Though its inclusion in jQuery isn’t planned until jQuery 1.5 is released, you can begin using it in plugin form immediately. That plugin is currently available on GitHub: http://github.com/jquery/jquery-tmpl"
and
"Data Linking – The next feature that may be a precursor to more official things to come is the jQuery-datalink plugin, which is also available on GitHub: http://github.com/nje/jquery-datalink. With this plugin, you can “link” JavaScript objects together so that they remain synchronized when changes are made to one or both of them. The canonical example of this is linking a JavaScript object’s properties to corresponding fields in a form, to eventually automate tasks such as change tracking and submission."
More from Scott Guthrie:
"jQuery Templates
The jQuery Templates plugin enables you to create client templates. For example, you can use the jQuery Templates plugin to format a set of database records that you have retrieved from the server through an Ajax request.
You can learn more about jQuery templates by reading my earlier blog entry on jQuery Templates and Data-Linking or by reading the documentation about it on the official jQuery website. In addition, Rey Bango, Boris Moore and James Senior have written some good blog posts on the jQuery Templates plugin:
When the next major version of jQuery is released -- jQuery 1.5 -- jQuery Templates will be included as a standard part of the jQuery library."
Monday, October 04, 2010
Sunday, October 03, 2010
Thursday, September 09, 2010
jQuery Grid Recommendations - Stack Overflow
jQuery Grid Recommendations - Stack Overflow: "The best entries in my opinion is Flexigrid and jQuery Grid (1st & 2nd in list). The others are included for completeness.
Flexigrid: http://flexigrid.info/
jQuery Grid: http://www.trirand.com/blog/
jqGridView: http://plugins.jquery.com/project/jqGridView
Ingrid: http://reconstrukt.com/ingrid/
SlickGrid http://github.com/mleibman/SlickGrid
I like the jQuery Grid (#2 above) better than Flexigrid mostly because it supports editable cells, and has very good documentation and samples on the website."
Saturday, August 28, 2010
How to
"How to make engineers write concisely with sentences? By combining journalism with the technical report format. In a newspaper article, the paragraphs are ordered by importance, so that the reader can stop reading the article at whatever point they lose interest, knowing that the part they have read was more important than the part left unread.
State your message in one sentence. That is your title. Write one paragraph justifying the message. That is your abstract. Circle each phrase in the abstract that needs clarification or more context. Write a paragraph or two for each such phrase. That is the body of your report. Identify each sentence in the body that needs clarification and write a paragraph or two in the appendix. Include your contact information for readers who require further detail.
-- William A. Wood (email), September 8, 2005"
Monday, August 23, 2010
The Marvels of Monads - Yet Another Language Geek - Site Home - MSDN Blogs
Thursday, August 19, 2010
Mastering the 960 Grid System | Nettuts
Don’t let jQuery’s $(document).ready() slow you down | Encosia
Thursday, August 12, 2010
Fiddler Extension – Request to Code | Chad Sowald
Tuesday, August 10, 2010
Scott Hanselman - How to Post Code To Your Blog and other Religious Arguments
Saturday, August 07, 2010
Commonly Confused Bits Of jQuery
Tuesday, July 27, 2010
Sunday, June 27, 2010
Thursday, June 17, 2010
Six Things Every jQuery Developer Should Know
Friday, June 11, 2010
Cookieless Session Problems in ASP.NET
Cookieless Session Problems in ASP.NET
Thursday, June 10, 2010
Git Reference
Git Reference
Tuesday, June 08, 2010
Parameterized unit tests using Pex - reducing code written
Friday, May 21, 2010
Thursday, May 06, 2010
Debugging classic ASP web application with Visual Studio 2010
Why, oh why, do people still use classic ASP?
Wednesday, May 05, 2010
Custom Configuration Section Handlers : Steve Smith's Blog
Custom Configuration Section Handlers : Steve Smith's Blog
Steve Smith is the guy who brings you Hudson Software Craftsmanship, who meet once a month in Hudson, OH.
Monday, May 03, 2010
Thursday, April 29, 2010
Using .NET: Tame Your Software Dependencies for Flexible Apps
This uses Castle Windsor and Binsor, a Boo (!) DSL for wiring up dependencies.
Using .NET: Tame Your Software Dependencies for Flexible Apps
Sunday, April 25, 2010
Silverlight 4 Training Kit - ScottGu's Blog
Silverlight 4 Training Kit - ScottGu's Blog
Wednesday, April 21, 2010
Git autocrlf problem revisited -- and solved!
The following commands, issued in a row, will work:
git add -u
git config core.autocrlf false
git reset
git config --unset core.autocrlfThis assumes that you've got
core.autocrlf normally on by default in the global settings file. If you do not, then replace the last line with the following:git config core.autocrlf trueOr, to consolidate in one command, the first version is:
git add -u && git config core.autocrlf false && git reset && git config --unset core.autocrlfwhile the second is:
git add -u && git config core.autocrlf false && git reset && git config core.autocrlf trueMSLinqToSQLGenerator fails when there's a partial class having a Using at the top of the file | Microsoft Connect
MSLinqToSQLGenerator fails with partial class having a Using at the top of the file | Microsoft Connect: "If you add a partial class declaration to a Linq-To-SQL Data Classes context object, and then put a 'using' statement at the top of the file outside the namespace declaration, the following error occurs when you run the custom tool:
'The custom tool 'MSLinqToSQLGenerator' failed. Unspecified error'
Also, Visual Studio will then delete the corresponding '.designer.cs' file for your data context and nothing will compile after that point."
Thursday, April 01, 2010
Belarc Advisor - Free Personal PC Audit
Tuesday, March 30, 2010
Jeffrey rambles about Rx, .NET and programming in general. : Time flies like an arrow in Script#
Jeffrey rambles about Rx, .NET and programming in general. : Time flies like an arrow in Script#: "Time flies like an arrow in Script#
As kouPhax requested this on the Rx forum, I decided to post a port to Script# of the Time flies like an arrow sample that ships with Rx for JavaScript.
Rx for JavaScript already ships with a binding for Script#, so that will make our lives a lot easier (you can find the binding in \Redist\ScriptSharp\RxJs.dll)"
Sunday, March 28, 2010
How to share data between stored procedures
Very cool article. Gives a table summarizing the methods.
Friday, March 19, 2010
Tsung
The purpose of Tsung is to simulate users in order to test the scalability and performance of IP based client/server applications. You can use it to do load and stress testing of your servers. Many protocols have been implemented and tested, and it can be easily extended. WebDAV, LDAP and MySQL support have been added recently (experimental).
It can be distributed on several client machines and is able to simulate hundreds of thousands of virtual users concurrently (or even millions if you have enough hardware ...).
Tsung is developed in Erlang, an open-source language made by Ericsson for building robust fault-tolerant distributed applications.
Tsung is supported by Process-One"
Wednesday, March 17, 2010
Create a self-signed SSL certificate with IIS 6.0 Resource Kit SelfSSL
Wednesday, March 10, 2010
[#LOG4NET-27] Rolling files on date/time boundaries doesn't support a maximum number of backup files. - ASF JIRA
[#LOG4NET-27] Rolling files on date/time boundaries doesn't support a maximum number of backup files. - ASF JIRA
Tuesday, March 09, 2010
Why won't my ASP pages work in IIS 6.0?
Why won't my ASP pages work in IIS 6.0?
Wednesday, March 03, 2010
Introducing SelectorGadget: point and click CSS selectors
Introducing SelectorGadget: point and click CSS selectors: "SelectorGadget is an open source bookmarklet that makes CSS selector generation and discovery on complicated sites a breeze. Just drag the bookmarklet to your bookmark bar, then go to any page and press it. A box will open in the bottom right of the website. Click on a page element that you would like your selector to match (it will turn green). SelectorGadget will then generate a minimal CSS selector for that element, and will highlight (yellow) everything that is matched by the selector. Now click on a highlighted element to remove it from the selector (red), or click on an unhighlighted element to add it to the selector. Through this process of selection and rejection, SelectorGadget helps you come up with the perfect CSS selector for your needs."
Tuesday, March 02, 2010
Glimmer: a jQuery Interactive Design Tool - Home
Glimmer: a jQuery Interactive Design Tool - Home: "Without having to touch a piece of JavaScript code, harness the power of the jQuery. With Glimmer: a jQuery Interactive Design Tool, easily create interactive experiences and use the tool to discover ways to add animation and other effects to your site in new and unexpected places. Glimmer is a Windows application which generates jQuery, XHTML and CSS. If jQuery is the “write less, do more” JavaScript library, then Glimmer is the “write none, do more” jQuery design tool."
Quick and Dirty Guide to Configuring Log4Net For Web Applications
private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);Quick and Dirty Guide to Configuring Log4Net For Web Applications
My code:
private static readonly ILog Log { get; set; }
static ClassConstructor()
{
Log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo(HttpContext.Current.Server.MapPath("~/log4net.config")));
}
Monday, March 01, 2010
The Kayak Framework: An easy way to speak HTTP with .NET
The Kayak Framework: An easy way to speak HTTP with .NET: "Kayak is a lightweight HTTP server for the CLR, and the Kayak Framework is a utility for mapping HTTP requests to C# method invocations. With Kayak, you can skip the bulk, hassle, and overhead of IIS and ASP.NET. Kayak enables you to do more with less syntax, and is easy to configure to work in any way you care to dream up."
Sunday, February 28, 2010
Integrating .NET and Erlang using OTP.NET - Nauman Leghari's Blog
Thursday, February 25, 2010
Rich Internet Application Screen Design | UX Magazine
- Make It Direct
- Keep It Lightweight
- Stay in the Page
- Provide Invitations
- Use Transitions
- React Immediately"
Wednesday, February 24, 2010
Flapjax
Flapjax: "Flapjax is a new programming language designed around the demands of modern, client-based Web applications. Its principal features include:
- Event-driven, reactive evaluation
- An event-stream abstraction for communicating with web services
- Interfaces to external web services
F# Web Tools | Projects | TomasP.Net
Looks interesting. There's a commercial product similar to this whose name escapes me at present.
Object Oriented JavaScript Class Library in C#/.NET Style - CodeProject
This is a really good guide on C# coding style in Javascript! He shows how to make classes, public, private, event handlers, enums, etc. Smart guy!
Wednesday, February 17, 2010
Converting between Base 64 and binary in SQL Server 2005
Implementing secure, unique “single-use” activation URLs in ASP.NET (C#)
Sunday, January 31, 2010
Upgrade causes loss of f5 networks host plugin
Why F5 Network didn't fix it, I don't know...
To install it :
- download the urhostplg.xpi file
- rename it in urhostplg.zip and unzip it
- change the version limit in 'install.rdf' file :
From :3.1.*
To : 3.5.*
- zip and rename to urhostplg.xpi
- drag and drop the .xpi on Firefox to install it"
Pushing to a Git repository using the wrong case causes peculiar behavior (maybe involves --forcing)
Unpacking objects: 100% (3/3), done.
From github.com:sidecut/Quest-Paperless
+ 22b4432...7d00da0 TRY-remove-LLBLGEn -> origin/TRY-remove-LLBLGEn (forced update)
error: Ref refs/remotes/origin/TRY-remove-LLBLGen is at 7d00da03b4a76116ffbaf89a4b5f6d54aeba9810 but expected 22b4432207570926a71d969a7ff8da821bf68354
! 22b4432..cddedc1 TRY-remove-LLBLGen -> origin/TRY-remove-LLBLGen (unable to update local ref)
As evident from gitk, the remote branch refused to advance farther, but I could continue to push to that branch from the office. (Notice the git fetch output mentioned a forced update. I don't remember, frankly, whether I pushed it in that way from the office
The culprit was hiding in plain site: the error message showed that the branch names that differed only in case:
TRY-remove-LLBLGEn
TRY-remove-LLBLGenThe solution? Dropped the branch
TRY-remove-LLBLGEn and recreated it using the proper case:git push origin :TRY-remove-LLBLGEn
git push origin TRY-remove-LLBLGen
Monday, January 25, 2010
Web Service Functional Testing - Tips and Tricks Login Security - soapUI
Friday, January 22, 2010
Youssef Moussaoui's WCF blog : How to Change .NET Configuration Files at Runtime (including for WCF)
One of the most common issues people run into with WCF configuration, and .NET applications in general, is that configuration files appear to be fixed. You only have one configuration file for an executable, and you can’t use different configuration files as your exe.config while the application is running. Of course, you can always shut down the application, change the configuration, and then restart it with the new configuration file, but that’s tedious and oftentimes undesirable. In this blog post, I’ll show you how to easily get around this limitation."
Wednesday, January 20, 2010
SharpTemplate � Xtreem Geek
Converts HTML into C# that gets compiled by Script#
Benefits from strong typing for all variable / API references that occur within the HTML
Generated HTML templates are super efficient due to compile time pre-processing that helps avoid regex matching in JavaScript unlike many other templating engines
Familiar templating syntax (based upon Asp.Net)
If you are not already using some sort of compile time HTML templating with Script# then you must definitely give this a try and see the productivity boost for yourself.
SharpTemplate has Script# as its prerequisite.� It can work in VS2008, VS2010 and Visual C# express."
Thursday, January 14, 2010
[ANN] DC ALT.NET – 1/27/2010 - Clojure
[ANN] DC ALT.NET – 1/27/2010 - Clojure: "Simply put, Clojure is a dynamic general purpose programming language that targets both the Java Virtual Machine as well as the .NET CLR. This language, which is a dialect of Lisp, combines the ease of an interactive development scripting language with something that makes it stand out, which is a robust concurrency infrastructure. Parts of the concurrency story that are interesting is both a software transactional memory (STM) system as well as a reactive agent system much like the Mailboxes we’ve covered here in F#. What also makes Clojure interesting is that it is predominantly a functional language with a rich set of immutable data structures.The Clojure site is the best place to get started which includes the language features reference, basic tutorials, screencasts and more. For those who wish to get Clojure working on the CLR, there are great instructions at the Git repository for ClojureCLR. In the future, I’ll cover more of the language, but these two references should be enough to get you started.
"
Wednesday, January 13, 2010
DotNet JQuery (DNJ) : new features in version 0.4.0
Check Out the Newest Additions to the Control Gallery!
Tuesday, January 12, 2010
Subversion seems to be losing favor among version control users : Jeffrey Palermo (.com)
Friday, January 08, 2010
Thursday, December 31, 2009
Eureka! SoapExtension problems solved! - Jan Tielens' Bloggings
Wednesday, December 30, 2009
ASP.NET.4GuysFromRolla.com: Exception Handling Advice for ASP.NET Web Applications
| "The Crib Notes |
|---|
My advice for handling exceptions in an ASP.NET application can be boiled down to the following guidelines:
|
Tuesday, December 29, 2009
How to Make Your ASP.NET Third Party Component 10x Faster > Web/Cloud Applications Development Platform > White Papers
I wonder how well this works. I tried making a control using Visual WebGui, but it was extremely expensive to load up a hundred of them on one page (yes, that's my requirement).
1.1�What is the Empty Client?
This architecture is an emerging open source methodology which offers a different approach to architecting, developing and deploying AJAX applications. In order to shed some light on this methodology, we will compare it to the classic Thin and Thick (also referred to as Fat or Smart) client approach and to traditional AJAX structures. Empty Client offers a new balance between the Thin and Thick client approaches and a new channeling of the AJAX calls."
Monday, December 21, 2009
Making Sense of ASP.NET Paths
Tuesday, December 15, 2009
How to commit in Git when there are "suspicious patch lines" with trailing whitespace
1. Stage desired files using "git add" or "git add -p" or "git gui" or "git citool" etc.
2. Use "git commit --no-verify"
Actually, was this really worth a blog post? Since this blog acts to augment my memory, I guess it does.
Friday, December 04, 2009
Dynamic LINQ - Development With A Dot
Saturday, November 21, 2009
ASP.NET 2.0: Playing a bit with GridView "Sort Grouping"
A few ASP.NET 2.0 GridView Sorting Tips and Tricks
Mike has a nice post that walksthrough how to implement custom bi-directional sorting with the GridView. Souri uses a similar approach to implement multi-column GridView sort semantics.
Teemu then has a cool post that shows how to implement 'sort grouping' where you can sub-group/band row values within the GridView:
Hope this helps,
Scott"
Thursday, November 12, 2009
Deployment of DHTML Visual WebGui application with different extension than the standard .WGX > Web, Cloud Applications Development, Deployment
Monday, November 09, 2009
jQuery Performance Rules
- Always Descend From an #id
- Use Tags Before Classes
- Cache jQuery Objects
- Harness the Power of Chaining
- Use Sub-queries
- Limit Direct DOM Manipulation
- Leverage Event Delegation (a.k.a. Bubbling)
- Eliminate Query Waste
- Defer to $(window).load
- Compress Your JS
- Learn the Library
Git Recipe for magical, mysterious end-of-line problem with Git status
Problem
git diff shows the every single line of the file as changed, but git diff -w (i.e. ignore all whitespace) shows the file as changed, but shows no lines as changed.Solution
1. Type this command to temporarily turn off
CRLF automagical conversions:git config core.autocrlf false; git config core.safecrlf false2. Refresh the view in
Git gui. There will be no changes indicated anymore.3. Type this line to temporarily turn
CRLF automagical conversions back on:git config core.autocrlf true; git config core.safecrlf true4. Possibly repeat more than once, staging and un-staging in the mean time. Like I said, it's a mystery.
NOTE: I've only done this once. I haven't tested it multiple times. I'm just posting it here for posterity's sake in case I need to try this recipe again.
Friday, October 30, 2009
Debugging classic ASP web application with Visual Studio 2005
Tuesday, October 20, 2009
Your Top Links about Web Site/AJAX Performance Performance, Scalability and Architecture – Java and .NET Application Performance Management (dynaTrace Blog)
Monday, October 19, 2009
A generic way to find ASP.NET ClientIDs with jQuery - Rick Strahl's Web Log
At the end of the article is this gem that might help me optimize the Vendor Web page:
"ID lookups in a document are among the fastest lookups the DOM can perform."
A Quick Reference Guide to Microsoft Technologies (Cheat Sheets) | SolidDotNet.com
These Cheat sheets are normally one-page reference guide"
Inversion Of Control, Single Responsibility Principle and Nikola’s laws of dependency injection - VusCode - Coding dreams since 1998!
Today I stumbled upon the stack overflow question regarding using DI frameworks for classes with many dependencies where the example given and couple of answers have reminded me about a subject I want to post for a long time....
And the 3 questions related to this example are:
- How to avoid passing those common but uninteresting dependencies interfaces to every class?
- How do you approach dependencies that might be used, but may be expensive to create?
- How to build object graph of MyClass considering the fact that any of those dependencies can have their own dependencies etc."
Wednesday, October 14, 2009
Installing Debian Testing from Netinst or Business Card
- Install Debian kind of minimally, i.e. without Desktop. (I still did "standard install".)
- Reboot.
- Edit the
aptconfiguration to point to testing: - Save the file.
- Run the following command to update the
aptsources after aptitude update: - Run the following command to upgrade the system to
testing: - Run the following command to install the desktop environment:
- Optional: run
taskselinstall again for file server and web server, which I need in my scenario for Git.
vi /etc/apt/sources.list :%s/lenny/testing/g
aptitude update
aptitude safe-upgrade
tasksel install desktop
10 Tools to learn any foreign language for free
Friday, October 09, 2009
Foundations of Programming Ebook
"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
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)
I'll put "dependency injection" here too so the blog search, if it ever gets fixed, will find it.
