473,473 Members | 1,738 Online
Bytes | Software Development & Data Engineering Community
Create Post

Home Posts Topics Members FAQ

Argument with a developer

Hello all. I'm a systems admin and not a developer. I work in a large
IT department with teams of developers. Currently we are asking them to
develop a utility for us that will migrate code, among other things.
It's going to be written in .NET code, and is meant to replace our
current code migration utility which was written in VB6.

One of the functions we are asking for is the ability to send an e-mail
and a page to indicate success of failure of a code migration. The
developer is pushing back. Here's the exchange between the developer
and myself.

DEVELOPER: For an application to send an e-mail, SMTP services need to
be installed and running. To send a page, permissions need to be
implemented for internet access. Ports outside the firewall would be
needed to send pages. This creates a security issue.

ME: There is a workaround. The following script will send e-mail
without SMTP services. And as for sending a page, you use the same
e-mail script, and include a skytel e-mail address:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sendFrom = "Al*****@fabrikam.com"
SendTo = "jo*****@fabrikam.com; 12*****@skytel.com"
strSubj = "NO SMTP service needed."
strContents = "Testing e-mail script."

sch = "http://schemas.microsoft.com/cdo/configuration/"
Set cdoConfig = CreateObject("CDO.Configuration")
With cdoConfig.Fields
.Item(sch & "sendusing") = 2 ' cdoSendUsingPort
.Item(sch & "smtpserver") = "mail.allstate.com"
'.Item(sch & "smtpserverport") = 25 ' if you need to set a port
number
.update
End With

Set cdoMessage = CreateObject ("CDO.Message")
With cdoMessage
Set .Configuration = cdoConfig
.From = sendFrom
.To = sendTo
.Subject = strSubj
.TextBody = strContents
.Send
End With
Set cdoConfig = nothing
Set cdoMessage = nothing
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

DEVELOPER: This VB6 script is and its related calls to WMI are not
supported in .NET 1.1 or .NET 2.0 framework. The idea is to move away
from old technologies not to keep supporting them.

ME: If you can't run a script such as this one within .NET, then you
can run the script via command line. That would allow it to be used in
the .NET 1.1 or .NET 2.0 framework.

DEVELOPER: Just because it can be run via a command line does not mean
it is a part of .NET. If you check the .NET framework reference there
is no use of WMI interfaces. It is old technology that, through the
..NET framework, is not supported.

ME: When the code migration has completed, then the new utility
launches an executable from the command line. That's all the
functionality it needs. That's where it stops. No other requirements
for working within the .NET framework are needed - other than the
ability for the new utility to launch an executable from the command
line, and pass it a couple parameters.
The rest is done by the executable that is launched - the VBScript
above.

....

I don't follow what his points are exactly. I don't see any references
to WMI in this VBScript. But that's really a moot point anyway - since
all we need the .NET utility to do is run an executable from the
command line. I would imagine that writing the code in .NET to run an
executable from the command line is a relatively simple task.

I would imagine that writing the code in .NET to UnZip a file is also
is a relatively simple task. And this UnZip functionality is something
else we're requesting, and the developer is pushing back on this as
well - claiming that it's too complex - which increases the cost and
man-hours of the project.

Am I missing something here? Does this developer have a valid argument?

Thanks.

- Dave

Oct 3 '06 #1
7 1434
"Highlander" <tr******@msn.comwrote in message
news:11*********************@h48g2000cwc.googlegro ups.com...
Hello all. I'm a systems admin and not a developer. I work in a large
IT department with teams of developers. Currently we are asking them to
develop a utility for us that will migrate code, among other things.
It's going to be written in .NET code, and is meant to replace our
current code migration utility which was written in VB6.

One of the functions we are asking for is the ability to send an e-mail
and a page to indicate success of failure of a code migration. The
developer is pushing back. Here's the exchange between the developer
and myself.
[snip]

Your requirement that "It's going to be written in .NET code"
clearly does not allow room for non-.NET functionality.

(I'm not a .NET developer (yet) so I can't comment on
its ability to send or not send email from within it.)
Oct 3 '06 #2
Hi Dave,

First of all, I hope your developer is a junior developer, because he
doesn't know much about the .Net platform or SMTP.
DEVELOPER: For an application to send an e-mail, SMTP services need to
be installed and running. To send a page, permissions need to be
implemented for internet access. Ports outside the firewall would be
needed to send pages. This creates a security issue.
To send email, an SMTP server is necessary. Note that I did not say SMTP
services need to be installed and running. As long as the client app can
access the SMTP server over a network, and has permission to use it, any
SMTP server may be used.

You didn't specify what you meant by "a page" so I can't comment. Did you
mean an attachment with an HTML page, or some form of pager page?
DEVELOPER: This VB6 script is and its related calls to WMI are not
supported in .NET 1.1 or .NET 2.0 framework. The idea is to move away
from old technologies not to keep supporting them.
This is just rubbish. First of all, WMI is an integral part of the Operating
System. Second, the .Net System.Windows.Management and
System.Windows.Management.Instrumentation namespaces are specifically for
working with WMI. Third, neither CDO nor WMI are necessary to send email.
The .Net platform has built-in classes (System.Net.Mail namespace) for
sending email. so, while your scripted "workaround" will certainly work, it
is unnecessary.

Finally, because of the above, the rest of the debate is moot.

--
HTH,

Kevin Spencer
Microsoft MVP
Software Composer
http://unclechutney.blogspot.com

If the Truth hurts, wear it.

"Highlander" <tr******@msn.comwrote in message
news:11*********************@h48g2000cwc.googlegro ups.com...
Hello all. I'm a systems admin and not a developer. I work in a large
IT department with teams of developers. Currently we are asking them to
develop a utility for us that will migrate code, among other things.
It's going to be written in .NET code, and is meant to replace our
current code migration utility which was written in VB6.

One of the functions we are asking for is the ability to send an e-mail
and a page to indicate success of failure of a code migration. The
developer is pushing back. Here's the exchange between the developer
and myself.

DEVELOPER: For an application to send an e-mail, SMTP services need to
be installed and running. To send a page, permissions need to be
implemented for internet access. Ports outside the firewall would be
needed to send pages. This creates a security issue.

ME: There is a workaround. The following script will send e-mail
without SMTP services. And as for sending a page, you use the same
e-mail script, and include a skytel e-mail address:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sendFrom = "Al*****@fabrikam.com"
SendTo = "jo*****@fabrikam.com; 12*****@skytel.com"
strSubj = "NO SMTP service needed."
strContents = "Testing e-mail script."

sch = "http://schemas.microsoft.com/cdo/configuration/"
Set cdoConfig = CreateObject("CDO.Configuration")
With cdoConfig.Fields
.Item(sch & "sendusing") = 2 ' cdoSendUsingPort
.Item(sch & "smtpserver") = "mail.allstate.com"
'.Item(sch & "smtpserverport") = 25 ' if you need to set a port
number
.update
End With

Set cdoMessage = CreateObject ("CDO.Message")
With cdoMessage
Set .Configuration = cdoConfig
.From = sendFrom
.To = sendTo
.Subject = strSubj
.TextBody = strContents
.Send
End With
Set cdoConfig = nothing
Set cdoMessage = nothing
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

DEVELOPER: This VB6 script is and its related calls to WMI are not
supported in .NET 1.1 or .NET 2.0 framework. The idea is to move away
from old technologies not to keep supporting them.

ME: If you can't run a script such as this one within .NET, then you
can run the script via command line. That would allow it to be used in
the .NET 1.1 or .NET 2.0 framework.

DEVELOPER: Just because it can be run via a command line does not mean
it is a part of .NET. If you check the .NET framework reference there
is no use of WMI interfaces. It is old technology that, through the
.NET framework, is not supported.

ME: When the code migration has completed, then the new utility
launches an executable from the command line. That's all the
functionality it needs. That's where it stops. No other requirements
for working within the .NET framework are needed - other than the
ability for the new utility to launch an executable from the command
line, and pass it a couple parameters.
The rest is done by the executable that is launched - the VBScript
above.

...

I don't follow what his points are exactly. I don't see any references
to WMI in this VBScript. But that's really a moot point anyway - since
all we need the .NET utility to do is run an executable from the
command line. I would imagine that writing the code in .NET to run an
executable from the command line is a relatively simple task.

I would imagine that writing the code in .NET to UnZip a file is also
is a relatively simple task. And this UnZip functionality is something
else we're requesting, and the developer is pushing back on this as
well - claiming that it's too complex - which increases the cost and
man-hours of the project.

Am I missing something here? Does this developer have a valid argument?

Thanks.

- Dave

Oct 3 '06 #3
"Highlander" <tr******@msn.comwrote in message
news:11*********************@h48g2000cwc.googlegro ups.com...
[...]
I don't follow what his points are exactly. I don't see any references
to WMI in this VBScript. But that's really a moot point anyway - since
all we need the .NET utility to do is run an executable from the
command line. I would imagine that writing the code in .NET to run an
executable from the command line is a relatively simple task.

I would imagine that writing the code in .NET to UnZip a file is also
is a relatively simple task. And this UnZip functionality is something
else we're requesting, and the developer is pushing back on this as
well - claiming that it's too complex - which increases the cost and
man-hours of the project.

Am I missing something here? Does this developer have a valid argument?
IMHO:

* It's a mistake to use public newsgroups as a way of resolving internal
departmental differences. If the developer finds out that you did so, it's
sure to only increase any animosity that may exist currently.

* Your description of the issue suggests to me that this is more about a
difference of opinion with respect to your solution specification. That is,
what does it mean to be "written in .NET code"?

I would agree with the developer that calling out to an external VB6 routine
negates the point of being .NET-only. That is, what happens when you try to
run on a system that has .NET, but not VB6 support? This is exactly the
sort of migration work-around that causes all sorts of headaches down the
road, when you think you've gotten fully incorporated in the new technology,
only to find that in fact all you've done is add another layer on top of the
old technology. Everything comes apart when that old technology gets
broken, removed, or otherwise deprecated.

As far as the specific example goes, I don't see that using the script you
posted is necessary in order to implement the desired functionality in .NET.

First of all, the "Collaborative Data Objects" (CDO) object being used in
the script you posted isn't specifically a VB6 object. It's a
general-purpose COM object provided in certain versions of Windows. I don't
see any reason one should not be able to call it directly from .NET, though
doing so may involve using some form of interoperability (ie platform
invoking (P/Invoke)).

Secondly, using CDO is just a shortcut way to implement something that talks
directly to a SMTP server. One could write all of the necessary code from
scratch in .NET. It would be a LOT longer than the script you posted, but I
don't see any reason it couldn't be done. It may or may not be within the
skill set of the developer, but it's technically possible.

IMHO, you and the developer should both try to communicate a little better,
to understand more precisely what your specific goals and limitations are.
Based on that, come up with a solution that meets everyone's criteria.

The best, most theoretically robust solution would probably be to just do
everything from scratch, based on the SMTP definition. But in reality,
Microsoft tries very hard to maintain backward compatibility, and I think
it's unlikely that CDO is going to go away any time soon. Because of that,
it may be most efficient for the developer to invest his time becoming
familiar with how interop works in .NET and using that to use CDO just as
the VB6 code you posted does.

But it's true that the CDO object isn't .NET per se, so you and the
developer need to get your definitions in order first. Otherwise, you're
just going to come back around to the beginning of this argument.

Pete
Oct 3 '06 #4
There are so many things wrong here. Most glaring is the omission of
any mention of a design. This is exactly what you and the developer
are arguing about.

regards
A.G.

On 3 Oct 2006 09:30:53 -0700, "Highlander" <tr******@msn.comwrote:
>Hello all. I'm a systems admin and not a developer. I work in a large
IT department with teams of developers. Currently we are asking them to
develop a utility for us that will migrate code, among other things.
It's going to be written in .NET code, and is meant to replace our
current code migration utility which was written in VB6.

One of the functions we are asking for is the ability to send an e-mail
and a page to indicate success of failure of a code migration. The
developer is pushing back. Here's the exchange between the developer
and myself.

DEVELOPER: For an application to send an e-mail, SMTP services need to
be installed and running. To send a page, permissions need to be
implemented for internet access. Ports outside the firewall would be
needed to send pages. This creates a security issue.

ME: There is a workaround. The following script will send e-mail
without SMTP services. And as for sending a page, you use the same
e-mail script, and include a skytel e-mail address:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sendFrom = "Al*****@fabrikam.com"
SendTo = "jo*****@fabrikam.com; 12*****@skytel.com"
strSubj = "NO SMTP service needed."
strContents = "Testing e-mail script."

sch = "http://schemas.microsoft.com/cdo/configuration/"
Set cdoConfig = CreateObject("CDO.Configuration")
With cdoConfig.Fields
.Item(sch & "sendusing") = 2 ' cdoSendUsingPort
.Item(sch & "smtpserver") = "mail.allstate.com"
'.Item(sch & "smtpserverport") = 25 ' if you need to set a port
number
.update
End With

Set cdoMessage = CreateObject ("CDO.Message")
With cdoMessage
Set .Configuration = cdoConfig
.From = sendFrom
.To = sendTo
.Subject = strSubj
.TextBody = strContents
.Send
End With
Set cdoConfig = nothing
Set cdoMessage = nothing
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

DEVELOPER: This VB6 script is and its related calls to WMI are not
supported in .NET 1.1 or .NET 2.0 framework. The idea is to move away
from old technologies not to keep supporting them.

ME: If you can't run a script such as this one within .NET, then you
can run the script via command line. That would allow it to be used in
the .NET 1.1 or .NET 2.0 framework.

DEVELOPER: Just because it can be run via a command line does not mean
it is a part of .NET. If you check the .NET framework reference there
is no use of WMI interfaces. It is old technology that, through the
.NET framework, is not supported.

ME: When the code migration has completed, then the new utility
launches an executable from the command line. That's all the
functionality it needs. That's where it stops. No other requirements
for working within the .NET framework are needed - other than the
ability for the new utility to launch an executable from the command
line, and pass it a couple parameters.
The rest is done by the executable that is launched - the VBScript
above.

...

I don't follow what his points are exactly. I don't see any references
to WMI in this VBScript. But that's really a moot point anyway - since
all we need the .NET utility to do is run an executable from the
command line. I would imagine that writing the code in .NET to run an
executable from the command line is a relatively simple task.

I would imagine that writing the code in .NET to UnZip a file is also
is a relatively simple task. And this UnZip functionality is something
else we're requesting, and the developer is pushing back on this as
well - claiming that it's too complex - which increases the cost and
man-hours of the project.

Am I missing something here? Does this developer have a valid argument?

Thanks.

- Dave
Oct 3 '06 #5
IMHO:
<snip>
I would agree with the developer
<snip>
One could write all of the necessary code from
scratch in .NET. It would be a LOT longer than the script you posted, but
I don't see any reason it couldn't be done. It may or may not be within
the skill set of the developer, but it's technically possible.
<snip>
The best, most theoretically robust solution would probably be to just do
everything from scratch, based on the SMTP definition. But in reality,
Microsoft tries very hard to maintain backward compatibility, and I think
it's unlikely that CDO is going to go away any time soon. Because of
that, it may be most efficient for the developer to invest his time
becoming familiar with how interop works in .NET and using that to use CDO
just as the VB6 code you posted does.
*NOT* IMHO:

COM Interop is something to avoid when possible, for various reasons,
including performance and complexity. In addition, as I mentioned in my
original and detailed response to the OP, the System.Net.Mail Namespace in
the .Net 2.0 platform is all that is needed to send email, and the object
model is quite easy to use.

--
HTH,

Kevin Spencer
Microsoft MVP
Software Composer
http://unclechutney.blogspot.com

If the Truth hurts, wear it.
Oct 4 '06 #6
"Kevin Spencer" <uc*@ftc.govwrote in message
news:OA**************@TK2MSFTNGP03.phx.gbl...
*NOT* IMHO:

COM Interop is something to avoid when possible, for various reasons,
including performance and complexity.
Whatever. IMHO, if one is concerned about performance and complexity, the
entire .NET framework may be something one wants to avoid.

It seems to me that if you've got a COM object that implements the
functionality you desire, and there's no more elegant solution available,
that's the way to go.
In addition, as I mentioned in my original and detailed response to the
OP, the System.Net.Mail Namespace in the .Net 2.0 platform is all that is
needed to send email, and the object model is quite easy to use.
That's great, and very useful information. I'm glad to hear there's
something built into the .NET framework that supports the desired
functionality. However, this is the only reasonable argument against using
CDO as far as I'm concerned.

Pete
Oct 4 '06 #7

"Peter Duniho" <Np*********@NnOwSlPiAnMk.comwrote in message
news:12*************@corp.supernews.com...
>
IMHO:

* It's a mistake to use public newsgroups as a way of resolving internal
departmental differences. If the developer finds out that you did so, it's
sure to only increase any animosity that may exist currently.
IMHO:
If posted anonymously and in a careful way, it's unlikely the developer would
ever know, and in reality it should matter little even if he did. We've all
worked with people who like to baffle us with B.S. and it's everyone's right to
research a subject further by asking other experts. That's just good business.
Otherwise one strong-headed employee can snowball everyone else because nobody
knows better or are too intimidated to confront the person. Bad business.

Of course there can be extremes to this and someone shouldn't question every
decision a person makes, especially if they know little about the subject
themselves (just enough to be dangerous.)
Oct 5 '06 #8

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

20
by: Glenn Venzke | last post by:
I'm writing a class with a method that will accept 1 of 3 items listed in an enum. Is it possible to pass the item name without the enum name in your calling statement? EXAMPLE: public enum...
19
by: James Fortune | last post by:
I have a lot of respect for David Fenton and Allen Browne, but I don't understand why people who know how to write code to completely replace a front end do not write something that will automate...
4
by: Todd Perkins | last post by:
Hello all, surprisingly enough, this is my first newsgroup post, I usually rely on google. So I hope I have enough info contained. Thank you in advance for any help! Problem: I am getting...
11
by: Mike | last post by:
I have done this many times but for some reason it's not working, the raise postback event fires but the eventArgument passed to it is empty. This is a simple custom control that implements...
1
by: pass Table Adapter as an argument | last post by:
Hi all , I'm just wondering if there is away to pass the tableadapter as an argument for common use purpose for example : public sub Save(pmTableAdapter as TableAdapter)...
16
by: Highlander | last post by:
Hello all. I'm a systems admin and not a developer. I work in a large IT department with teams of developers. Currently we are asking them to develop a utility for us that will migrate code, among...
50
by: LaundroMat | last post by:
Suppose I have this function: def f(var=1): return var*2 What value do I have to pass to f() if I want it to evaluate var to 1? I know that f() will return 2, but what if I absolutely want to...
1
by: Khai Doan | last post by:
I have function A, which need to call function B with the exact same argument list. What is the correct way to do this? I had function A: function A { B(arguments); } but it does not...
5
by: Nicholas | last post by:
Hello, i need to pass an argument to window.open but it seems it wont work. What am i doing wrong? This in in head: <SCRIPT LANGUAGE="JavaScript"> <!-- function nw(a,b){ myWindow =...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
1
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
0
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and...
0
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated ...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.