Well you know you are an extreme geek when you are excited for a new release of an IDE.
I’m really looking forward to the integrated AJAX tools and the built in MVC framework.
http://www.vnunet.com/vnunet/news/2202822/microsoft-sets-date-fro-visual
Well you know you are an extreme geek when you are excited for a new release of an IDE.
I’m really looking forward to the integrated AJAX tools and the built in MVC framework.
http://www.vnunet.com/vnunet/news/2202822/microsoft-sets-date-fro-visual
Can a CRM (Customer Relationship Management) system really create profits for a company? A lot of people don’t think so – over the years the media has reported quite a few companies (both big and small) that have tossed a significant amount of dollars down the drain on these kind of systems. But there have been plenty of successes too. In fact, during the 12 years we’ve been selling and implementing CRM products like GoldMine and Microsoft CRM we’ve seen some penny pinching business owners really get a lot of bang for their bucks. Here’s how.
The Lonely Old Quote: Tyler, who runs a parts distribution company had a big problem: one of out of every ten quotes his salesmen sent were never followed up! Sure, some of these opportunities may have been lost to others, but Tyler wondered just how many of these quotes could’ve turned into a sale if someone would’ve just called the customer. The problem? He had no system to track his quotes! Tyler made changes – he purchased a simple CRM system and made sure that each quote was tagged with a follow-up call and alerts to the sales staff when they were due. He also built in an alarm for his sales manager in case a salesperson was ignoring his follow up calls. Within a few weeks Tyler could see the difference. Every quote was now pursued with either a phone call or email.
Opportunities that could’ve slipped through the cracks were now addressed. Sales increased.
The Bright Side Of A Lost Sale: Don, a penny pinching manager at a consulting firm, actually thinks there’s a bright side to a lost sale. “Because of our CRM system,†he says. “We can track every time a sale does not go our way.†Sometimes a competing product beat them. Other times a customer decides not to do anything at all. Whatever the reason, Don’s company tracks the history and every three months runs a Lost Sales Report and does a post mortem. It’s never pretty. It’s oftentimes frustrating. “But it’s ALWAYS educational,†Don continues. “Armed with where we screwing up, we can adjust and win back more dollars going forward.†And he wouldn’t be able to do it without his CRM system.
Too Few Sales Calls, Too Many Donuts: Jim, another penny pinching manager who works at a large cable company was often confronted by sales guys asking for more money. Jim always turns to his CRM system and says, “Well, let’s take a look at the old batting averageâ€. Here, Jim can see how many quotes a salesperson put out vs. what he closed. “Now, now,†Jim chuckles. “What can we do to increase this percentage so YOU get more money.†Jim tracks his sales people’s calls and appointments and looks at their productivity. “Now why did you spend so much time with this little prospect, when you could’ve been spending more time with that bigger fish?†A good CRM system helps the penny pincher squeeze the most efficiency from his sales team.
Don’t You Hate Looking Like A Dope? The other day Harry, a sales rep for a software company, called one of his customers to tell them all about the great features coming in the software’s up and coming new release. He wasn’t prepared for the response he got. “New release?†his customer yelled. “How about getting the OLD release working first!†Because Harry’s company didn’t have a CRM system he had no idea that his service group was working on a problem with this customer. His call did nothing more than enflame emotions, rather than creating good will. More dopey moments like that and Harry could watch his sales disappear. A good CRM system ensures that everyone in the company knows everything that’s going on with your customers. And your prospects, vendors and other parties too. This way no one looks like a dope when representing your business.
Too Few Service Calls, Too Many Donuts: It’s not just penny pinchers who recognize the value of time as well as money. But good penny pinchers do something about it. Do you have a system that tracks how employees spend their time on issues, problems, breaks and other customer complaints? Is service time being wasted? Are there service issues that aren’t being addressed? How come this one part has so many problems? Should we keep doing business with that customer who calls us so much? Can you get an alert when certain issues are breached? Using CRM software to track how productive your service group is will save a lot of pennies in the long run.
Fun And Games With Duplicate Data: For goodness sake, just how many places do I need to keep the same information? Sandy kept asking herself this question. A typical penny pincher, she hated the fact that customer information was entered in her website, in her accounting system, in her email system, in spreadsheets and other databases. “Enough!†she yelled. She got a CRM system. She designed one web form to capture the customer data and the CRM system took care of that. The same data was sent automatically to other systems. Accounting and inventory information stayed in her financial system, but her CRM system was able to be configured to view that data. Enter it once, make it available elsewhere. Buying a good CRM system? A few thousand bucks. Using it to eliminate wasted time and incorrect data entry? Priceless!
Getting the word out – mass communications: Alexis knew that the more customers she could reach, the more opportunities she could create and even more pennies would drop into her bank account. So she configured her www.marksgroup.net CRM system to send out automatic emails to customers who hadn’t ordered in a while and to customers who ordered a product in the past who may be interested in an accessory or similar product. She produced with her system direct mail pieces each day announcing specials. She created a newsletter to keep her customers informed about new developments. Her CRM software sent out faxes to groups of customers who gave her permission to alert them to new incentives. She scheduled groups of telemarketing calls to be made by high school kids in the evening. Alexis is no mass marketer but she’s certainly a great penny pincher. And her bottom line shows the results!
Source: http://www.smartbiz.com
By: Gene Marks
NAnt is a free .NET build tool based on Ant (a build tool for Java). NAnt, like Ant, is similar to Make in that it is used to generate output from your source files. But where Ant is Java-centric, NAnt is .NET-centric. NAnt has built-in support for compiling C#, VB.NET, and J# files and can use Visual Studio .NET solution files to do builds. NANt also has built-in support for NUnit and NDoc (.NET version of JUnit and JDoc, respectively).
NAnt is a useful tool for automating the build process. The build process can include tasks such as compiling source code and resource files into assemblies, running unit tests, configuring build-specific settings, and so on. The benefit of tools like NAnt is that they help automate the build process by providing enough power and flexibility to highly customize build actions for specific applications. This article provides an overview of NAnt, including its purpose, how to download and install NAnt, using NAnt, and other NAnt essentials. Read on to learn more!
What is a this thing you call Build Tool?
A “build tool” is a tool that you use to build your source code and resources files into assemblies. We use build tools everyday in development. Here are some tasks that are performed during the “entire” build process:
NAnt and other build tools allow you to automate some or all of these steps. You can configure the build tool to kick off the processes and automate a lot of work that is usual manual and tedious.
OK So what does NAnt do? Why is it the best?
NAnt is different. Instead of a model where it is extended with shell-based commands, NAnt is extended using task classes. Instead of writing shell commands, the configuration files are XML-based, calling out a target tree where various tasks get executed. Each task is run by an object that implements a particular Task interface.
Granted, this removes some of the expressive power that is inherent in being able to construct a shell command such as ‘find . -name foo -exec rm {}’, but it gives you the ability to be cross-platform – to work anywhere and everywhere. And hey, if you really need to execute a shell command, NAnt has an <exec> task that allows different commands to be executed based on the OS it is executing on.
What is Required?
The system requirements are pretty obvious and simple. To use Nant you need one of the following CLR’s:
Note: Additional requirements may apply to individual tasks.
NAnt uses a number of open source third party libraries. Recent versions are included with NAnt distribution and no extra work is required to install them. More information on these libraries are available at:
NUnit – Required for unit testing
NDoc – Required for documentation generation
SharpZipLib – Required for the zip and unzip tasks
OK So it sounds like I need it, How do I install it?
NAnt is available in either a source or binary distribution. The binary distribution is all you need to use NAnt to build your projects, including creating your own custom tasks, types and functions.
If you are upgrading NAnt from a previous version, you must never install over the top of your previous installation. Delete or rename the existing installation directory before installing the new version of NAnt.
Installing from binaries
ant-bin.zip or nant-bin.tar.gz will work, the contents of each archive are the same.
nant.bat in a directory that is included in the PATH system environment variable. (eg. C:\WINDOWS).
nant.bat:
@echo off
"C:\Program Files\NAnt\bin\NAnt.exe" %*
nant.bat in a directory that is included in the PATH system environment variable. (eg. C:\WINDOWS).
nant.bat:
@echo off
mono "C:\Program Files\NAnt\bin\NAnt.exe" %*
nant in a suitable location in your filesystem (eg. /usr/local/bin).
nant:
#!/bin/sh
exec mono /usr/local/nant/bin/NAnt.exe "$@"
nant has permission to execute, eg:
chmod a+x /usr/local/bin/nant
nant -help. If successful, you should see a usage message displaying available command line options.
Installing from source
nant-src.zip or nant-src.tar.gz will work, the contents of each archive are the same.
make install MONO= MCS=csc prefix=installation-path
eg. make install MONO= MCS=csc prefix="C:\Program Files"
nmake -f Makefile.nmake install prefix=installation-path
eg. nmake -f Makefile.nmake install prefix="C:\Program Files"
make install prefix=installation-path
eg. make install prefix="C:\Program Files"
nmake -f Makefile.nmake install MONO=mono CSC=mcs prefix=installation-path
eg. nmake -f Makefile.nmake install MONO=mono CSC=mcs prefix=/usr/local/
This will first build a bootstrap version of NAnt, and then use that to build and install the full version to installation-path/NAnt.
Installed….CHECK! Now how does it work?
NAnt is a command-line application that acts on build files that you write in XML. Each build file contains one project and any number of properties and targets. A property is a variable and a target is a set of tasks. An example is worth a thousand words, so here is Hello World as an NAnt build file:
<?xml version="1.0"?>
<project name="Hello World" default="hello">
<property name="hello.string" value="Hello World" />
<target name="hello" description="Echoes 'Hello World'">
<echo message="${hello.string}" />
</target>
</project>
NAnt looks for build files in the current directory with a .build extension. If there is more than one build file in the current directory, NAnt looks for one named default.build and, if present, uses it. You can explicitly specify the build file to use with the -buildfile:<filename> command line argument.
All NAnt build files require one (and only one) <project> tag. In the ‘Hello World’ example, the <project> tag contains the default argument. The default argument specifies which target NAnt is to execute by default. In this case, NAnt will execute the hello target by default.
The ‘Hello World’ example defines one property and one target. The property is named hello.string and its value is ‘Hello World’. (Properties don’t have to be named with periods, but often are in NAnt build files). The ‘Hello World’ example’s one target is named hello and it contains one task. The <echo> task echoes the string indicated by the message argument. The syntax ${hello.string} may be confusing at first, but this syntax is simply telling NAnt to substitute the value of the hello.string property in its place.
Assuming you named the ‘Hello World’ example build file default.build, you would simply enter nant at the command line to build it:
C:\>nant
(You could specify the ‘hello’ target on the command line (C:\> nant hello), but since this is the default target, this is unnecessary.)
How about a More Practical Example?
Here’s a build file (based on the excellent article by Giuseppe Greco, Building Projects With NAnt) that compiles a HelloWorld.cs source file. In addition to the build target, it includes a debug target. This enables you to specify whether or not this build should including debugging information:
<?xml version="1.0"?>
<project name="HelloWorld" default="build">
<property name="project.version" value="1.0" />
<property name="project.config" value="release" />
<target name="init">
<call target="${project.config}" />
</target>
<target name="debug">
<property name="project.config" value="debug" />
<property name="build.debug" value="true" />
<property name="basedir.suffix" value="-debug" />
</target>
<target name="release">
<property name="project.config" value="release" />
<property name="build.debug" value="false" />
<property name="basedir.suffix" value="-release" />
</target>
<target name="build" depends="init" description="compiles the source code">
<property name="build.dir" value="${nant.project.basedir}/${nant.project.name}_${project.version}${basedir.suffix}"/>
<mkdir dir="${build.dir}" />
<csc target="exe" output="${build.dir}/HelloWorld.exe" debug="${build.debug}">
<sources>
<includes name="HelloWorld.cs" />
</sources>
</csc>
</target>
</project>
Things to notice about this build file:
debug and release. You include these targets on the command line to specify the type of build configuration. Notice that release is the default configuration.
build target has a depends argument. This tells NAnt to make sure the init target is up to date before calling the build target.
init target calls another target explicitly. In this case, it calls either the release or debug target.
1.0_HelloWorld-release or 1.0_HelloWorld-debug) Assuming you have a valid HelloWord.cs file in the same directory as the build file, you can build the release version of this project just by entering nant at the command-line. This is equivalent to entering nant release build, but because project.config is set to release by default and the default target is build, this isn’t necessary.
If you want to do a debug version of this project, use the following command: nant debug build. Note that you must specify the build target in this case. If you specify any targets on the command line, NAnt ignores the default target. If you just entered nant debug, NAnt would have executed the debug target and then exited. If you notice that the debug target is called twice when doing a debug build, you can move to the head of the class. It is called first because you specify it on the command line and a second time by the init target. This is not as efficient as it could be, but I left it this way for simplicity.
Obviously we are just scratching the surface of what NAnt can do with the above example.
What is the Workflow of a Build Using NAnt?
Once you have your build file(s) written and tested, you will want to start using them for your builds. Performing a build with a build tool like NAnt usually involves these steps:
debug build, for example)
<mail> task to have NAnt notify you by email when the build completes; this is useful for solutions that require especially long builds)
<copy> task is an example.
<msi> task if you want to create .msi installation packages from NAnt.) You can actually automate the NAnt build process using continuous integration tools like Draco.NET and CruiseControl. These tools monitor your source code and automatically perform builds when they detect changes.
First, I will give an overview of what the test was like and then I’ll give you my review of it.
The test was given to me to try and gauge my skills as a .NET Web Developer. The test was 35 questions and it took around 30 minutes to complete. It was the c# web 315 test.
I would say the questions broke out something like this:
25% DataSet questions
20% Questions dealing with signing of .dlls
15% SqlClient connection syntax
15% Web.config environment syntax questions
10% Configuring IIS
10% VB6/COM Interoperability with .NET
5 % MISC
Some of the questions where multiple choice, while others were multiple answer checkboxes. The test did a good job of mixing up the questions so that they were dispersed evenly over the 30 minutes.
My Summary/Review
Well after this exam, I remembered why I’ve never tried for MCSD. As you can see from the percentages above there were no questions about 1.) Object oriented design. 2.) n-tier design. 3.) design patterns of any type. 25% devoted to DataSets? I refuse to use DataSets 90% of the time when developing web applications. Yes! There are times when DataSets are useful. YES! Datasets have come a long way in ASP.NET 2.0, but I am not going to memorize the syntax to all of the Merge, Data Relationship, Table methods/properties.
In my opinion, the only way to find out what a person knows about a technology is to sit down with them and walk through code manually and talk about it. Ask questions like “Do you know why we did this?”. “What would you do here to make this more efficient”. Write up an architecture diagram for a mock customer/project. These are the things that you are going to be faced with as a developer in front of a customer.
I just don’t get how these Transcender tests or a MCSD license is any indication of your skills as a software developer / architect.
Well I just wanted to give a formal thank-you to Microsoft for it’s recent support of extending the tools for Microsoft Web Developers. I’ve been pretty tough on Microsoft over the last year on it’s issues with Microsoft Visual Studio 2005 and it’s massive delay on releasing SP1.
As most of you know, ASP.NET AJAX v1.0 was officially released last week. The release was accompanied by loads of videos and sample code that should get any .NET Developer off the ground and running with AJAX in no time at all.
Most of the thanks goes to the wonderful developers responsible for developing ASP.NET AJax, but certainly Microsoft has done a lot to make these tools happen.
Here are some links to get you started:
- Main ASP.NET AJAX site: http://ajax.asp.net
- ASP.NET AJAX Download. With ASP.NET AJAX, developers can quickly create pages with rich, responsive UI and more efficient client-server communication by simply adding a few server controls to their pages. This new Web development technology from Microsoft integrates cross-browser client script libraries with the ASP.NET 2.0 development framework. ASP.NET AJAX provides developers building client-based Web experiences with a familiar development process and programming model that they already know from using server-side ASP.NET development. Because ASP.NET AJAX is integrated with ASP.NET, developers have full access to the built-in ASP.NET 2.0 application services and the entire .NET Framework.
- ASP.NET AJAX Control Toolkit. The ASP.NET AJAX Control Toolkit offers developers a rich variety of client-side controls and extenders through a compilation of code samples and components. If you’re looking for eye-catching control behavior without having to go through the trouble of writing and testing extensive JavaScript code or adding complex animations, the ASP.NET AJAX Control Toolkit offers the right balance of visuals and ease-of-use.
- ASP.NET AJAX Library. The Microsoft AJAX Library is a standalone collection of the standards-based JavaScript classes included in ASP.NET AJAX. It’s supported by most popular browsers and can be used to build client-centric Web applications that integrate with any backend data provider.
I suggest everyone take a look at these wonderful .NET tools. AJAX is not going away anytime soon, and it is important to realize the benefits that this “old but re-juvinated” techology is bringing to the web.
Microsoft announced the release of Internet Explorer 7.0 today.
Let me first say that I’m a huge football fan and I think bringing football back to Louisiana is important for the state. That being said, I also think that it could have waited another year.
Hurricane Katrina absolutely destroyed the Superdome. The roof was ripped off, and the entire complex was in shambles. People have debated since then on whether the team should move or the stadium should be rebuilt.
The state decided to rebuild the stadium at a cost of $180 million.
Here are some facts about the process:
The majority of the population of the gulf coast region is still living in Houston or Baton Rouge or Atlanta or wherever, largely because FEMA hasn’t gotten around to replacing or repairing anything but a handful of the homes and buildings and other critical infrastructure destroyed by Katrina.
Here’s who footed the bill for the new and improved Superdome:
Total: $184 Million
So that works out to 62.5% being paid for by the federal government – less than the 75% required by law, but almost certainly more than just “previous quality.â€
All this, in addition to the new and improved FieldTurf (which is a substantial upgrade over the old AstroTurf playing surface).
Nothing was done to improve the Superdome’s capability as a storm shelter. It is estimated that those upgrades would cost an additional $30-$40 million.
I sure hope my free tickets are in the mail since I’m now a partial owner of their stadium.
I was asked the question today why a sql query was timing out. A co-worker explained that he changed the ConnectionTimeout setting and it was still timing out. I thought i’d post about the differences between CommandTimeout and ConnectionTimeout.
ConnectionTimeout is the one specified in your connection string and it is the time it takes for a connection.Open() invocation to wait until it gets a connection reference from the connection pool. (Default value is 15 seconds)
CommandTimeout is the maximum time for a specific sql command to execute. (Default value is 30 seconds)
First let me say that I have worked on DotNetNuke for the last five years. It is the best open source product i’ve ever seen. The project has wonderful developers and is always innovating.
Today they announced the formation of DotNetNuke Corporation. This is exciting for me to see since I have been involved in DotNetNuke since the early beginning. I’ve used the software in many projects and have built lots of custom modules. Here is the press release:
Worldwide popularity of DotNetNuke enables new organization to pursue wide range of opportunities to benefit the community
Seattle, Wash. — September 21, 2006 — DotNetNuke®, the popular Open Source web application framework for the ASP.Net platform, today announced the formation of DotNetNuke Corporation, a new company to serve the growing needs of the project and its ever-expanding community. The new entity will focus on the management of the project, while leveraging a wide array of resources to create and distribute a superior, free, Open Source web application framework that cultivates a passionate developer community and a prosperous commercial ecosystem.
“The formation of this company reflects the maturity of the DotNetNuke project,†said Shaun Walker, founder of DotNetNuke Corp. “As the adoption rate of DotNetNuke continues to grow, it is increasingly being used as a platform for mission-critical websites and web applications. DotNetNuke Corp. exists to instill confidence that while the project continues to remain true to its Open Source ideals, it will also be backed by a company that is focused on providing professional management and stewardship for the project.â€
Perpetual Motion Interactive Systems, Inc., Walker’s British Columbia, Canada-based company that currently manages the DotNetNuke® project and its intellectual property including trademarks, will transfer these assets to DotNetNuke Corp., which will be based in Seattle, Washington, Walker said. The new company will maintain the primary authority for managing the Open Source project, stewarding and distributing the source code, setting policies, managing intellectual property, and organizing the relationships between all participants in the project.
“DotNetNuke Corporation is not a typical commercial entity,†Walker added. “Rather, it is dedicated to the public benefit goal at the heart of the DotNetNuke project, which is to create opportunities and spread entrepreneurship to the world by providing a superior Open Source web application framework.”
The project continues to be successful in achieving this goal. In the four years since the DotNetNuke project was launched, it has seen its registered user ranks swell to 335,000 members and demand for its flagship product surpassing 2 million downloads worldwide. This worldwide adoption of DotNetNuke has created significant economic value both for the project and also the commercial ecosystem that it has spawned.
“This economic value is an unintended but real by-product of the DotNetNuke project’s overarching mission to create opportunities and spread entrepreneurship to the world,†Walker said. “Carefully managed, this value — and the resulting ability to generate revenue — can be used to make the DotNetNuke project self-sustaining and help keep the community open and diverse.â€
In addition to spearheading the Open Source project, DotNetNuke Corp. will also focus on developing and delivering services which support the ecosystem, including marketing, sponsorships, and a wide range of partner-related activities. These activities are expected to generate revenue, but the company intends to focus on those opportunities that are consistent with the community values and public goals of the project, Walker said. This includes providing funding for aspects of the project that are difficult or challenging for volunteer teams to solely undertake such as professional marketing, large-scale platform and feature development, product certification and ecommerce initiatives, he added.
“Overall, the operation of the DotNetNuke project will remain unchanged,†Walker said. “Participants in the DotNetNuke project will not experience any difference in the way the DotNetNuke application is developed, licensed or distributed. As DotNetNuke Corp. adds resources in those areas that are currently lacking, we expect to see improvements that will have an overall positive impact on the project,†Walker said.
The current members of the DotNetNuke project management board – Joe Brinkman, Nik Kalyani and Scott Willhite – will join Walker as co-founders of the new company.
About DotNetNuke®
“Our mission is to create opportunities and spread entrepreneurship to the world by providing a superior open source web application framework which cultivates a passionate developer community as well as a prosperous commercial ecosystem.†DotNetNuke® is an open source web application framework ideal for creating, deploying and managing interactive web, intranet and extranet sites. With a rapidly growing community of over 300,000 registered users, a legion of dedicated professional developers, and an active commercial ecosystem, DotNetNuke® continues to strengthen its leadership position in the Microsoft enterprise market.
About Open Source
The basic idea behind Open Source is very simple: When programmers can read, redistribute, and modify the source code for a piece of software, the software evolves. People improve it, people adapt it, and people fix bugs. And this can happen at a speed that, if one is used to the slow pace of conventional software development, seems astonishing.