.Net

There are 66 entries for the tag .Net
So in response to some comments on my original post on this topic, I started playing around with some other ideas. I figured it would be cleaner to post code here, rather than the comments. How many variations on the theme can we really have? As suggested in the comments on the previous post: 1: public static string Join1<T>( this IEnumerable<T> items, string delimiter, Func<T,string> converter ) 2: { 3: return string.Join( delimiter, 4: items 5: .Select( converter ) 6: .Where( ......
I’ve had a lot of feedback on my Oracle Update with Join post. The most common problem people have encountered with this approach is the dreaded “SQL Error: ORA-01779: cannot modify a column which maps to a non key-preserved table”. Tom Kyte has a detailed explanation of this at Ask Tom. However, I thought I would take a moment to address my example scenario. There are actually a couple of ways to update based on data joined from multiple tables. The first is outlined in my first post. But, let’s ......
A few weeks ago, I blogged about building an alternative to Dynamic Data. I have to say, it’s pretty sweet. I added a new entity type yesterday, including a couple of minor overrides and I was done. Here are the steps I had to take (testing left out for clarity): Create the entity: 1: public class ExcludedCounterparty : IAuditedWithId 2: { 3: public virtual int Id { get; set; } 4: public virtual Counterparty Counterparty {get; set;} 5: public virtual string CreatedByUser { get; set; } 6: public virtual ......
A couple of weeks ago I was searching for an alternative to Dynamic Data. My motivation was simple. Integrating Dynamic Data with Oracle and/or NHibernate would be challenging. I was amazed at how little I could find that would solve this problem. Surely Dynamic Data wasn’t the first or only. Eventually, I gave up and worked with a coworker to develop our own alternative. Fresh off a Fluent Nhibernate implementation, we decided to take the convention-over-configuration approach. The Fluent interface ......
[Oct ’09 Update: web views have approximately doubled since May.] I was looking through my blog history to see which posts were visited the most. To give you a point of reference, the next closest post to has around 3000 visits. I’ve had more comments on “Oracle Update with Join” than any other as well. Ironically, I’ve been using NHibernate more heavily and these types of Oracle statements/queries hold less value in my daily activities. Tags: blogging ......
About a year ago, I started to evaluate ASP.Net MVC, but decided to put it aside because it was still in heavy-duty development. With the official release a couple of weeks ago, I decided to check it out once again. MVC has a lot of things to offer, but there are a few critical things that we couldn’t overlook. We have a few web applications that all have quite a lot invested in server controls (both third-party and developed in-house). In ASP.Net WebForms, for something as simple as a GridView with ......
I few months back, I was having major problems with VS 2008 crashing on me left and right. After trying numerous things to resolve my problem, I finally decided to uninstall all of the .Net Frameworks and VS, then reinstall. My problems started shortly after I installed SP1 (both .Net Framework and VS 2008). I can’t say for certain that SP1 was causing my problems, but since then (after reinstalling without the service packs), I have not experienced the crashing. There are other reasons that I wanted ......
So, I just ventured into tagging my blogs, partially because I think tag clouds are cool, but also it really can be helpful to find related posts. The problem however, is I don’t know what provider I should use. Being on GeeksWithBlogs, and thus Subtext, I can use the built in support for microformat. However, the tag cloud works great, but the tags that I add to my post are incomplete. Unfortunately, Subtext expects a “default.aspx” at the end of the url. I’ve tried a number of ways to work around ......
Visual Studio had a problem where it would added "a lot of nbsp" when toggling from Design to HTML mode with certain custom controls. I blogged about it originally here. It appeared to be fixed as I described on another post, but it only seemed to occur less often. Finally, there is an official fix. It's not truly a "hotfix" though. It asked me to reboot to complete the update. Tags: Visual Studio, ASP.Net, Server Controls ......
My trial ran out a few days ago. And I haven't posted about R# for almost a month. I have to a few more things to share, and perhaps I can save everyone some time. The R# team has done quite a few small things to raise the tool a step above my expectations. There are a lot of things that may seem small, but really turn out to be significant improvements to the way I manage my code. Simple things, like, locating new code (via refactoring) with similar declarations (fields with fields, properties with ......
A couple of weeks ago, I was working on some client side UI elements on one of my projects. I was able to apply some things that I have learned recently (some more recently than others). The problem is that I have a domain object that tracks the selected days of the week. Currently the object uses a List<DayOfWeek> to manage the selections. (This is not exactly the most safe thing because a client could set the list to null. However, that's a different subject.) What I was looking for was an ......
I've been using ReSharper now for about one and a half weeks. Now that I am writing some new code, I have more to share. The most helpful and time saving feature that I have encountered so far is code generation. In one case, I had added a couple of new properties to one of my entity objects. In actuality, I add the code in my test first. R# quickly recognized that the property didn't exist and gave me the option to create a field or property. I chose the property option and presto, R# found my class ......
Recently I blogged that the Resharper install corrupted TestDriven.Net. I followed up to say that certainly wasn't the case. In fact, there was nothing wrong with TestDriven.Net. The problem was between the keyboard and chair. I kept getting an error about not being able to load one of my base test classes. At compile time everything was fine. I would get the error only when trying to run the test in TestDriven.Net. R# could run the tests with no problem. This led me to believe it was a problem with ......
I've discovered what was causing problems with TestDriven.Net and it isn't ReSharper. I had recently refactored my test fixtures and now I have a few that make use of generics BaseTest<T>. I had run into a problem with TD.Net before regarding generics and had to rearrange my classes (I had two classes in one file) to get it to work. I don't remember the details and I am still having problems getting it to work now. Regardless, R# is off the hook. And as an added bonus, R# doesn't appear to ......
So day two brought more items of interest. Unit Testing still problematic Apparently, ReSharper installs with version 2.2.8 of NUnit. I am using 2.4.8 which includes syntax helpers. A bunch of my tests were failing with multiple TypeLoadExceptions. To resolve the issue, I ran the tests in debug mode and took a look at where the nunit.framework library was being loaded from. I found that it was being loaded from C:\Program Files\JetBrains\ReSharper\v... Once I determined that I was dealing with ......
I finally installed ReSharper yesterday to try it out. I've been dragging my heals because I didn't want to have to learn a bunch of new commands and pay for that right (I'm cheap, I know). Here are a few things I noticed immediately. Keep in mind that these are first impressions, and they are sure to change over the next couple of weeks. [Update] I turns out that ReSharper is not the culprit here. See this post for more details. TestDriven.Net broken after ReSharper install. Any time I attempt to ......
I attended the Houston TechFest today, and am now finding it difficult to sleep with all of the new knowledge and relationships filling my mind. I finally decided to get out of bed and put some of my thoughts in writing. The Fest was great. There are a few good reasons to attend an event like this. It's free. You get to meet new people with common interests. Employment opportunities are there if you are looking for them. You almost certainly learn something (if not many things). There are lot's of ......
I ran into the same old "cannot serialize value myType of type myType" issue the other day and knew immediately that I should check that my classes were marked with the [Serializable] attribute. Well, I checked and all of the classes had the attribute as required. So I spent an hour our so searching the web for other reasons why we might get this error. I found nothing. So I pinged a buddy of mine and I walked him through the issue. He said, "It's gotta be one of your classes missing the Serializable ......
I've had a few comments to my PageMethods blog from about a month ago. They were all along the lines of "not enough code." I wasn't really intending to provide a detailed account of my experience, but to exclaim how cool PageMethods are (at least for my scenario). Well, I am hoping to put some time aside over the next week or two to write a brief article on the subject. I'll be sure to include all of the code and hope to go through each step of the relatively short process. By the way, if anyone ......
[If you are looking for a quick answer, jump here.] Yesterday morning was probably one of my least favorite in recent memory. I arranged to take the day off to go shopping with my wife, but I had to check-in to make sure everything was okay at the office. I checked my email from home and found that there were suddenly two issues reported on my project that was scheduled for an update in production that night. Needless to say I had to address the problems. It turns out that neither were more than ......
Today I was working on a WebForm that includes a GridView which presents text boxes for various columns. I put these in the ItemTemplate so all of the rows could be edited at any time. The next requirement was to update certain read only columns (e.g. Total Amount) based on the changes of the others. Originally, I had the entire GridView in an UpdatePanel, but that quickly proved to be a problem for two reasons. First, the updates were fairly slow. Second, the active control would lose focus after ......
Recently, I ran into a problem where I needed to cast from an unknown type to a known type. Normally this would be fine as I a generic cast. For example... 1 public static T ValueOf<T>( this OracleCommand command, string parameterName ) 2 { 3 return (T)command.Parameters[param... 4 } The parameter of course returns an object and I wanted to streamline the parameter value lookup process. All was well until I started using ODP.Net (instead of Microsofts OracleClient). With the OracleClient, ......
So I was hoping this post would be a glorious review of my first attempt at working with WebParts and Oracle. Alas, the experience has not been so glorious. I am working on a "dashboard" of sorts as a demo for my boss. I spent a few hours on it this afternoon as a spike to see if the approach is feasible. I have to say that I believe it is, but there is one major kink I have to work out. ASP.Net WebParts uses the SqlPersonalizationProvider by default. Unfortunately, we are developing on Oracle. However, ......
Introduction Last time we spent a lot of time on the SelectionController. To conclude the series, we will hook the selection behavior into our CustomGridView. Recap: Custom GridView Guidelines - Preface Custom GridView Guidelines - Part 1 - Preparing the Canvas Custom GridView Guidelines - Part 2 - Selection Interface Custom GridView Guidelines - Part 3 - SelectionController Implementing the IRowSelectionView There are quite a few events on the view that the CustomGridView needs to implement. In ......
Introduction This part in the series will focus on the SelectionController. Here is where most of the work is done. We've already covered the view interface, IRowSelectionView. Now we will see how the controller interacts with the view. Recap: Custom GridView Guidelines - Preface Custom GridView Guidelines - Part 1 - Preparing the Canvas Custom GridView Guidelines - Part 2 - Selection Interface Capturing Shift and Ctrl Key Status We want to emulate multi-selection as in Windows Explorer. The Shift ......
Introduction I briefly described the design approach in Part 1. This part in the series will explore the ways in which the custom GridView communicates to the controller. I extend my apologies for the lack of code. I am limited in what I can provide. I hope that these guidelines will help point you in the right direction. Classes / Interfaces CustomGridView - The GridView we are customizing SelectionController - Responsible for the row selection behavior IRowSelectionView - How CustomGridView and ......
Background Way back in March I posted about a custom GridView I was working on. Then in June, I said that I would be posting some guidelines "in the coming weeks". Needless to say, I've been busy with other things. I am hoping to provide some basic guidelines on how to customize a ASP.Net GridView. I am no expert. The experts build components for retail use. Also, I've taken a server-side approach to the problem which is perhaps a little outdated with AJAX technology available. In my case, I use ......
That is, don't use Cassini in your development environment if you aren't planning to use it in production. For example, my customer is running IIS on their server. Why shouldn't I do the same? With what I have seen with Cassini, there is no reason. Cassini is great, but there are noticeable differences between it and IIS. I am using a third party menu that performs poorly through Cassini, but works fine on IIS. Others have documented differences in behavior with Cassini. Scott Lilly describes a couple ......
First of all, since my last post indicated I would be gone a while because of Huricane Ike, I guess it wouldn't hurt to provide an update. Well, I still have a little bit of work to do on the house, but things are mostly back to normal for me. There are still a lot of people in the Houston area recovering from the storm. I've personally helped clean up two homes that had water 4-5 feet high on the first floor. This makes me all the more glad that I am on the north side away from the storm surge. ......
First of all, I have no complaints. There are certainly people with more to worry about than me. For those who don't know, I live in Houston, and Hurricane Ike "passed" through Friday night. I am still without, power, but my boss has power now as of yesterday afternoon. In fact, I am at his house now and will probably be working from there for the next week or so. There is minor damage to my home. In fact the worst is the ruined food in my fridge. The power company said that it will likely take two ......
In Css and Custom Server Controls I talked briefly about a problem with the mark-up for my server controls being injected with &nbsp; after toggling to Design View. It was certainly something I could work around, but it was annoying nevertheless. I just couldn't see anything in my designer code that could cause the issue. Well, I recently reviewed the Visual Web Developer Team Blog about the multiple fixes included with VS 2008 SP1. Under the WebForm /HTML Design View subheader, there is an item ......
I've gone through a few iterations of AnkhSVN over the last couple of years. The first installment was quite unstable and was only good for viewing the status of your source from within the IDE. You would use the other features at your own risk. However, Ankh looked extremely promising so I kept an eye out for updates. The last 1.x update I had installed was working rather well, though there were some limitations. With the release of 2.0 most of those limitations are almost forgotten history. Some ......
Clearly MS hasn’t caught up with the third party tools that are out there? Which do you guys use? ReSharper Refactor! Pro C# Refactory Visual Assist X I've used Refactor!Pro on a previous project and liked it quite a bit. I assume a lot of these include the same basic features. Perhaps the difference is in the number of refactorings and additional features outside of refactoring. ReSharper seems to be the most widely used. But, does it give the most bang for your buck? Does it meet the needs of a ......
I recently added a new page to my application that is very similar in behavior to a page I had already completed a couple months back. In fact, the similarities propagate down through the business and data layers as well. Because of this, I was able to introduce some base classes to limit duplication. In fact, I started all of this with a generic base test class. All of the base classes (with generics) were pretty straight forward. However, generics wouldn't help me when it came to the UI (aspx). ......
In the application I've been working on, we have the requirement to handle unique constraint errors gracefully. It wasn't really hard, I just had to check for OracleException.Code == 1. The trick was the testing. Testing a unique constraint error was not a problem. The issue is verifying that other exceptions are bubbled up properly. The basic exception handling code is like this: 1 protected bool HasUniqueConstraintError( Action databaseAction ) 2 { 3 try 4 { 5 databaseAction(); 6 return false; ......
Before I get started on Generic Classes in .Net, I'd like to give credit to CopySourceAsHtml for my new formatting of code blocks in my blog. I made some of my own enhancements, but I'd still be using the boring black on yellow formatting without CSAH. To learn how to get it to work on VS2008, go here (be sure to read the comments if you are running on XP). We've all used generic classes without thinking much about it. I use List<T> extensively (perhaps abusively). I really only discovered ......
Despite "The Cost of Premature Optimization", it's useful to know how things work so you can do basic things to avoid bad performance. In the end, the example below is trivial and doesn't have a significant effect on performance (at least as it applies in my application). However, knowledge of IEnumerable and yield can come in handy when it really counts. As I was writing a bit of code, I wondered if order matters when it comes to query expressions. Specifically, I have an enumerable that I was applying ......
I received quite a bit of feedback regarding my Join extension to IEnumerable that generates a comma separated list. The purpose was to emulate string.Join(), but to add more flexibility as to what is "joined". I took some time aside to investigate some of the suggestions and alternatives to my implementation. I should note, that I would not normally do this. I try to avoid premature optimization. However, there are certain practices that can be learned that improve performance in general (like using ......
In response to a comment on one of my previous posts (Safely Overriding Equals), I've decided to post some comments about Extension methods in general. A friend asked me what I gained out of extending string to convert to an enum. He asked, "is it just 'syntactic sugar'?" The simple answer is, "Yes." In fact, this is true of many extensions. Clearly, the major advantage of extensions is changing the syntax of how they are called. In fact, I have written a few extensions that support chaining and ......
It seems that enums might be the neglected step-child when it comes to Generics and Extensions. I've tried defining generics that are constrained to enums. No luck. I faced much frustration trying to get my generic methods to work. I finally came up with a method that meets my need. But, I had to add a little bit of run-time type checking. Instead of repeating Enum.Parse throughout my code, I wanted to create a simple generic extension method that would do it for me. I just discovered that my extension ......
So, I've settled on a pattern that I found somewhere on the web to safely override Equals. I don't remember where I found it, and there are certainly many other good implementations (probably better than mine). Regardless, I found that I do have a repeating pattern. I decided to set out to limit this duplication if I could. Here is what I came up with. 1: public static bool SafeEquals<T>( this T left, object right, Predicate<T> test ) 2: { 3: if( right != null && right.GetType().Equals( ......
The string.Join method can come in handy when you want a comma separated list of strings. However, there's a major limitation. To use it, you must provide a one-dimensional string array. What if you have a collection of objects and you want to "Join" a property on the objects (e.g., a comma separated list of IDs). Well, since I couldn't find anything within the framework that would do this for me, I wrote an extension method that meets my need. Updated from James Curran's suggestion in the comments. ......
[Update Oct ‘09 In response to a number of comments on this post regarding problems with this approach, I’ve added a new blog entry with more details. Check it out.] Those with a SqlServer background will be familiar with the UPDATE .. FROM syntax. For example (totally made up) 1: update employee_bonus 2: set bonus = 0 3: from employee_bonus b 4: inner join employees e on b.employee_id = e.employee_id 5: where e.bonus_eligible = 'N' Those who transitioned from SqlServer to Oracle might find the absence ......
I've had a few people ask me about my custom GridView and whether I can help them with theirs. Though, I cannot share my code directly, I can provide some guidelines. In the coming weeks I plan to post segments stepping through customizing a GridView. My customizations are by no means perfect, and I have had to tweak things as I encounter issues. I look forward to sharing my experiences. I will probably post a multi-part article that walks through customizing a GridView. Again, I will not be posting ......
I'm clearly not the oldest knife in the drawer, nor am I the youngest. I got involved with computers in my youth just about the time Bill Gates was positioning himself to put a PC in every home. What this means is, I grew up on PCs with no mice; pre-Windows, pre-GUI. I learned how to write "menu" programs that utilized a broader range of ascii characters than most people are familiar with today. The point is, everything I did on the computer I did with the keyboard. I recall in high school, a new ......
I re-learned something seemingly trivial today. The == operator is not the same as Equals (more specifically, the default implementation of the == operator). I overrode Equals for one of my classes and couldn't figure out why my code wasn't working. Then I realized that == performs a reference comparison, not a value comparison. I will have to keep this in mind any time I am comparing objects. Generally, I will want to use the Equals method. When I first encountered the problem, I decided to implement ......
Last month was a busy month for me. We deployed the first version (beta) of the product I have been working on over the last couple of months. Meeting the deadline with all of the promised features (almost) was critical. However, when you fix the time line and fix the feature set, then something else has got to give. You guessed it, quality. Quality is not just a concern over failures. There is a level of quality in your successes as well. So far, the feedback on the product has been very positive, ......
I guess it's about time I've posted again. I've been very busy. Just coming up for air for a bit. I've been mixing some CSS design patterns with Server Controls recently. Aside: A nice book about CSS design patterns is Pro CSS and HTML Design Patterns. It is very helpful in understanding how the boxing models work and it provides a lot of practical examples. Anyway, copy-paste reuse easily gets out of hand on a web project. It's not always easy to refactor HTML. Anyway, I have many pages that use ......
I've have been pretty quiet lately. Actually, I've been quite busy and it turns out that there isn't much new to share. However, this is one thing that comes to mind. A recurring pattern in my UI is selection criteria that can applied to a GridView. It turns out that frequently the same criteria applies to various screens. I use LinqDataSources to bind to DropDownLists for many of the criteria. It is not uncommon to use one controller for every page. Following this approach, I ended up with the same ......
In a recent post, I mentioned that I was working on a customized grid view. Last week I completed the "binding to user settings" behavior. Then I took a look at the source and was stunned. I had almost 700 lines of code (and comments) and it wasn't well organized. So, I set out to start adding regions to the code to separate different behavior. The last sentence should have raised some flags. Regions to separate behavior? What happened to the cohesion of my grid view? I seem to have lost sight of ......
C# 3.0 has certainly introduced some really cool features. I have used the Automatic Properties extensively as well as object and collection initializers. These are real time savers. However, the most exciting feature (IMHO) are Extension Methods. My last post shows one example of how powerful extension methods can be. Here is another example (inspired by Scott Gu). 1: public static class Extensions 2: { 3: /// 4: /// Do not use this extension for large sets because it iterates through 5: /// the ......
How many times have you written something like this? 1: public string MyStringProperty 2: { 3: get 4: { 5: object s = ViewState["MyStringProperty"]; 6: if( s == null ) 7: { 8: s = "MyDefaultValue"; 9: } 10: return (String)s; 11: } 12: set { ViewState["MyStringProperty"] = value; } 13: } 14: 15: public bool MyBooleanProperty 16: { 17: get 18: { 19: object b = ViewState["MyBooleanPropert... 20: if( b == null ) 21: { 22: b = true; 23: } 24: return (bool)b; 25: } 26: set { ViewState["MyBooleanProperty"] ......
So, I decided to put my custom GridView in a AJAX UpdatePanel. This was my first serious exposure to AJAX (asp.net). I discovered that I was having major problems. I kept getting an "unspecified error". Because it occurred whenever I clicked on a row, I assumed it had to do with the JavaScript I wrote for the GridView. I did tons of web searching about how to properly use script in a controlled wrapped in an update panel. I tried a few things, including embedding the script and registering the script ......
A few nights ago I decided to work on a custom GridView. My goal (derived from a customer request) was to build some additional behavior into the GridView without having to write a whole bunch of client-side or code-behind code. These are the things that I am focusing on: Select a row when the user clicks on it (no CheckBox) Allow the user to select multiple rows (using Shift and Ctrl keys) Bind display settings to site preferences Column header text Bind display settings to user preferences Columns ......
It seems that I have encountered a scenario where many aspects of C# 2.0+ come into play. I needed to handle conversion from an IDataReader.GetValue() result to a generic type, including Nullable<>. It took me a while to figure it out and with a little help from this snippet, I was quite please with the result. So, I decided to share. 1: private static T NullValue<T>( object testValue, T nullValue ) 2: { 3: T returnValue; 4: if( testValue is DBNull ) 5: { 6: returnValue = nullValue; 7: ......
I recently switched over to TeamCity from CC.Net. Normally, like most people, I hate change. But, while it took me a while to figure out the new way of configuring a build, it was certainly worth it. Some of the benefits: Being able to copy a configuration to easily start configuration of another. Nifty "pause" feature. Taking responsibility for broken builds Easily viewing build logs in the web interface Client tools (tray, ide integration) I am sure there are others. The list above are benefits ......
So, I learned something new yesterday. I haven't spent a lot of time in ASPX over the last couple of years, and when I did I didn't really pay attention to what is new. Well, I learned about the nifty DataSourceControl classes. In my case, I decided to use the LinqDataSource control. And I put it to use on a nested GridView with Paging I struggled for more hours than I care to admit to accomplish what I wanted. In the end, I was pleased at just how little code was required. Check out my full article ......

The Load event came to my rescue

As much as I have enjoyed playing with the Entity Framework (Beta 3), I will be uninstalling shortly after this post. The fact of the matter is, my company is not prepared to go to production in a couple of months with something that hasn't seen a lot of action. The EF certainly seems stable enough, but, I can respect this decision. The good news is that we are still using VS 2008 & .Net 3.5. Also, my plan is to maintain a design that we can migrate to the EF without too much effort. Hopefully ......
While playing with Linq and trying to get it to work with Oracle (Linq to Oracle *sigh*), I struggled with the fact that Linq appears to tightly couple business objects with data/persistence. I found myself pondering this fact and trying different approaches to separate the ObjectContext from EntityContext(s). In Linq, the ObjectContext is the object that you provide with a connection string and has the knowledge to send/receive data to/from your database. The EntityContext(s) are the classes that ......
Well, I have been playing with Linq, specifically with Oracle. First of all, the only way I could find to make this work is to use a third party software, OraDirect.Net by Core Lab. Their product is great. Perhaps that statement is biased by the fact that they are the only one's building a library to support Linq to Sql (as far as I know). There is certainly room for improvement. I've crashed VS a few times because I was trying to force OraDirect to do something it doesn't support. So, error handling ......
I really like the fact that MSBuild is installed with the .Net Framework so you do not have to install a separate build tool. Unfortunately, if you are developing Web Application projects (WAP), you may discover something is missing. In my case, I am building a VS2008 project and the build server does not have Visual Studio installed. No problem, right? Wrong. It turns out that when you install VS, it deploys some additional targets to the MSBuildExtensionsPath. Without these targets, when you run ......
I received the "okay" today to develop our new application in .Net 3.5. This is really great news. I am looking forward to taking advantage of some of the new technologies available. In particular, I will be checking out the MVC Toolkit that Microsoft offers as an add-on. I have implemented MVC/MVP in previous versions of ASP.Net. The experience was cumbersome at best. The real issue I had is that it was really difficult to move the appropriate pieces out of the view and that the view knew too much ......
Last week I started working on the build scripts for my new project. I've worked on build environments in the past, but I didn't really commit everything to memory. Thus, I have had to reinvent the wheel in some ways. So far I have established commit and nightly builds. Each build cleans up after the previous build, retrieves the latest source, compiles the application, and runs the tests under coverage. The tools of choice: CruiseControl.Net, Subversion, NUnit, NCover, and MSBuild. Originally, I ......
This week I learned a hard lesson. I was at a customer site and assumed that because my boss agreed with the Agile principles and practices that I was touting, then the customer would agree without question. I didn't even make a proper presentation as to the benefits that the customer could expect. Michael Cline said in response to my last post, On Agile Island, "the customer cares about one thing. Does it make my life easier?" I shared various features of Agile, but I did not really address the ......
I have started on a new project and am looking forward to implementing continuous integration (CI). There are quite a few decisions that need to be made as far as how we want to handle the build and deployment process. I am working with a small group of people who have worked together in the past. They have some practices that have worked well for them. I don't want to rock the boat too much, so I am evaluating their process with what I know and am familiar with myself. The biggest difference between ......