Hi Roger,
"Kramer" here... (or "Fred" or whoever I am today...). I'll try to be brief
and answer your specifics..
Regarding your most immediate goal... the print dialog box modifications...
given that little kids are the end-users here, perhaps you could supply your
own dialog box to Word or perhaps you could write a custom application that
acts as a wrapper around Word - exposing only the functionality of Word the
little kids are to have access to. In the latter case, you could make the UI
as "little-kid-friendly" as you like (or have time and energy/money for). In
any case, this is a pretty clear target, and you could get a bunch of
guidance from the relevant news groups. Be sure that if you go for your own
custom desktop application, that you understand the requirements of .NET.
Specifically you will need to have the Common Language Runtime (aka "CLR")
installed on each desktop (I know, I can already hear others piling on to
say that this isn't the only alternative), but it is the most common and
likely scenario you'd be looking at implementing. So perhaps regarding
"where to start with .NET", you could look at the requirements (hardware and
software) for installing and running ASP.NET desktop applications and Web
applications (two very different sets of requirements - you'd do good to
know this info if you don't already). The CLR is big, and the PCs in your
school will need to be able to run it and support other minimal
requirements. If they can't and won't for the foreseeable future, then that
will make a bunch of decisions right there.
Regarding "... I would like to create a script that tags machines when they
connect to the network..." As I'm sure you are well aware, Active Directory
with Group Policy Objects correctly designed and applied correctly can do
practically any of the sorts of things you describe. That said, this is
typically a whole different skill set than you will find with a competent
programmer. More on this later...
Regarding "...it would be nice to create a delivery tracking mechanism...":
This sounds like its own new application - perhaps integrating with an
existing order processing system? In any case, the way it's presented, I
suspect this would be a brand new "from the ground, up" application that
doesn't integrate with any other systems (at least not yet). It could be
implemented as an ASP.NET Web application (would make sense if it's accessed
from multiple geographically dispursed locations and you have a secure
intranet), or a Windows Desktop application (excuse me, "Windows
Application" in current parlance) if you want a richer UI and it's accessed
pretty much from PCs on one LAN. Which type of app you chose has significant
impliations for which skillsets you focus on first... more on this later...
Let me be sure I'm clear on a few "facts" before proceeding to make
recommendations.
1. You have a rather large part to play in the future direction of your
current employer (which is a K-12 school).
2. You have a few immediate needs (network/Active Directory/GPO-oriented
problems, and a couple of applications that could be created in the
short-term.
3. You just want to learn, and have no experience programming (nothing
beyond tweaking a script here and there; you're right, that's not
programming according to most full-time programmers)
4. You don't know where to start (or you see way too many possible starting
points), thus your question to the group.
5. Unless I'm wrong (and I'm never wrong : ), you don't have anyone telling
you what you need to do on your job - other than you need to come up with
some solutions that people are happy with, and according to some generally
reasonable timelines (but no one lighting a fire under your rear).
Given your situation and objectives, I'll suggest a three-stage approach:
Stage 1: Learn what's possible with .NET.
Not in a general sense (".NET is going to save us from all of our sins");
but in a very specific sense. That is, learn, at a very high-level, what
each of the types of .NET applications are that you can create in Visual
Studio.NET; they are: Windows Application, Class Library, Windows Control
Library, Smart Device Application, ASP.NET Web Application, ASP.NET Web
Service, ASP.NET Mobile Web Application, Web Control Library, Console
Application, and Windows Service. DON'T Spend more than an hour or two
reading up on each one... just be able to explain to yourself in plain
English what each one does - and what kinds of problems it is designed to
solve. When you are done with this one exercise, you will probably to be
able to know - for yourself - that you only need to EVER concern yourself
with 2, maybe 3 of them (and can then safely ignore the rest). Also as part
of "Stage 1", learn what the hardware and software requirements are for
installing each of the application types just listed. Read up on some
general interest articles on .NET - read some real-world case studies just
to see what people are doing out there with .NET. For fun, read up on some
comparisons between .NET and J2EE (you'll find what smacks of an ongoing
religious debate between the virtues of each.) Be sure that in your .NET and
J2EE research that you take note of the licencing costs of J2EE components.
Oh, and also compare the runtime performance differences where you can find
any. The one's I've seen are astounding. Finally, to wrap up Stage 1, take a
few hours to learn the fundamental differences between Web programming and
desktop application programming. Web/Internet applications have their own
unique set of challenges (particularly paying attention to the "stateless
nature of the Web"). Anyway, the whole point of this so called Stage 1 is to
get an idea of what's going on and what's possible with .NET - but very
specifically in terms of the different types of applications.
Stage 2: Decide what to focus on.
You'll never be very good at anything if you try to know it all. There's
simply too much already, and more is being added to the mix every day. Part
of the point of Stage 1 is to put you in a position to intelligently decide
what can be *safely ignored* by you given your current and long-term
employment situation. When you decide what your focus will be (and you
really do need to decide this at some point if you are ever going to create
any non trivial solutions), then I strongly suggest that you fully immerce
yourself in whatever that particular area is. The 'full immersion" would
begin by you first identifying all the sources of information relevant to
your area of inquiry. There is certainly the MSDN libraries, varous news
groups, Web sites, training classes at the local J.C. or university
extension, self-paced training from companies like AppDev, etc. Take some
time to acquaint yourself with each. One source you rarely hear of is that
you can hire a consultant to come in and train you. I've had clients
approach me to simply work side-by-side with their programmers to help them
up the learning curve as is specifically relevant to their company and
current projects. If you have the budget, bring some top-notch developer in
to work with you for a couple of weeks (if you'll find one willing to commit
to such a short-term deal). Finally, it sounds like you are already have
some working knowledge of networks. If you didn't have that, then I'd
strongly suggest that you learn the basics (given that almost any non
trivial solution you will need to create will operate across a network).
Once you have gone through Stage 1 and 2, then you'll be in the position to
answer your own questions about the print dialog and the order tracking
application... at which point you can proceed to Stage 3:
Stage 3. Build a real-world solution
Just do something; there is absolutely no substitute for actually completing
a non trivial real-world project. This is where your real expertise is
gained.
One last thing...
....you never mentioned a database: I'd strongly recommend that whatever
types of applications you decide to focus on, that you include learning (1)
relational database design in general and (2) SQL Server in particular. No
matter what types of applications you decide to become an expert at, any/all
of them will likely need to store data somewhere - and being that you are in
the Microsoft world, SQL Server is likely to be the database of choice.
Whatever you do, don't ignore the topic of "relational database design" -
independent of any particular database (Oracle, Access, DB2, SQL Server). A
good book to start with if you are new to that topic is titled "Database
Design For Mear Mortals". At least cruise through that book if nothing else;
at a minimum, read the chapter on bad database design. If you see yourself
in that chapter, then you'll automatically want to read the rest of the
book. Knowing the basics of good database design should be a 'must' beyond
anything else you do. Put another way, if you start off with a bad database
design, then your whole solution is screwed from the start.
Okay, I actaully tried to be brief!
Good Luck
- Kramer (I mean Fred).
MCSD, MCDBA, MCSE, MCSA
"Midnight Java Junkie" <jo***@joy.com> wrote in message
news:vV*********************@news4.srv.hcvlny.cv.n et...
Kramer. . .
Jolly damnd good questions. . . I thank you.
I currently work for a school that services the K-12 market. When it
comes to the future of the organization, I play a rather large part in it.
My most immediate goal in terms of writing 'something' would be a way to
add something to the print dialogue box in programs like Word. We have little
kids using some machines so its very hard for them to go file, then print.
Ideally, this would be my first project, so that when they hit a modified,
bigger, bolder print button, a dialogue box would pop up and ask them,
perhaps with some type of friendly wizard type character, which printer
they wanted to print to. . . then show them a little window with the pictures
of the printers they have available.
Thats basically one start of it.
Other solutions are more along the lines of learning VB to script things.
In combination with a simple script and a bit of programming (which, as I
said, I know nothing about), I would like to create a script that tags
machines when they connect to the network. The command I pulled out of a
few books and tweaked as best I could which results in certain
organizational unit machine groups shutting themselves off at different
times of the day. This is well and good, but if a user has the
workstation locked, there is no dialogue box that pops up and asks them to save their
work or snooze the shutdown. Since a lot of our users walk away for the
day without so much as signing off from their computers, a system policy locks
their workstation after about twenty minutes of inactivity to have some
form of security. In any event, another project would be one where that would
be taken care of, but I know thats not a classic .net application.
In terms of other solutions, it would be nice to create a delivery
tracking mechanism for packages that arrive and then are misplaced for months at a
time.
I could identify a lot of solutions, if I sat down and put my mind to it,
but my point is where to start with .NET. I want to get into it not for
the sake of fiancial gain, but because programming is the one thing that I
have yet to jump into - its a mystery to me and I dont like being totally in
the dark when it comes to such matters.
You asked me what my "personal IT interests and goals" are which I can
simply answer. . . to learn. I want to learn as much as possible and, as
I said, programming is the only thing that I know nothing about. I realize
the power of .NET and what can be done with it. At this point, I just
need to see which class to start with. I mean, do I go into a VB .NET starter
class or just a VB starter class which, at the very least, would allow me
to get into the finer points of scripting, which I know precious little
about.
For me its about the learning and accomplishment. . . if the money comes,
hey, thats a good thing and I have been fortunate in that regard given the
economy as a whole.
Many thanks again,
Roger
your personal IT interests and goals, then we'd be glad to offer more specific direction
"Kramer" <KM**@KMan.edu> wrote in message
news:ee**************@TK2MSFTNGP12.phx.gbl... If your plan is to stay with your current employer for the long term,
then you might start by looking at the organization's long-term IT strategy
and plans, and then look to align your interests; find something within
their long-term plans that you would enjoy participating in. If you have some
say in that long-term strategy, then you might look at the organization's
mission and priorities (would it be to save money... or to have whistles
and bells regardless of cost... or somewhere in the middle). In any case it
might be a good idea to start with a problem to solve - high-level as it
may need to be defined. The way you posed your question it almost sounds
like you have discovered a bunch of solutions but don't have any real
immediate problem to which they could be applied (beyond modifying Office apps).
"I have a gun, is there a monster somewhere here that I can shoot?" as
opposed to "geeze, there's a monster - how best to kill it?". .NET is big, very
big (for fun, once you discover what the base class libraries are, see if
you can get a current count of the number of functions contained within
those libraries, and you'll see what I mean by big; and that's just the base
class libraries). Perhaps the best advice you could get would come after you
can tell us more specifically the kinds of IT problems your organization has
currently, will have in 2 years, and is likely to have in 5 years; how
many users, the kinds of IT tasks they perform, where they are geographically
located (centrally or dispursed), the extent to which IT funding may be
an issue, etc. Without knowing such things, it would be hard for us to give
sound advice given the starting point you describe; we literally don't
know what we are advising on. If you can provide more specifics on (1) your
organization's IT needs and (2) your personal IT interests and goals,
then we'd be glad to offer more specific direction.
Good Luck...
"Midnight Java Junkie" <jo***@joy.com> wrote in message
news:9r****************@news4.srv.hcvlny.cv.net... Dear Colleagues:
I feel that the dumbest questions are those that are never asked. I have been given the opportunity to get into .NET. Our organization has a
subscription with Microsoft that basically entitled to us to just
about every .Net development tool you can imagine. I cant even begin to mention them.
To begin with, my background is not that of a programmer, but a
systems engineer and the closest I have come to "programming" is modifying a basic script here and there to accomplish something, when I mean basic, I do
mean basic at the lowest level.
So I have to do two things: First, I need to know what I can do with all of these .NET packages. I mean, can I use the to modify an application
like Word 2002(XP) to have an added print dialogue. I work for a school so
I can be sent to .Net classes, but I dont know what I could use to justify this expense. Essentially, I dont want to go to a bunch of .Net classes
and then not be able to use them in the real world.
So basically, if you have a nice little Active Directory network, with
all of the AD bells and whistles and deployment abilities, policies, etc.,
what can I bring to the table with the .Net development tools I have before me?
I know that .Net and VB .Net and ASP.Net can do a lot of things, but I
just need a place to start. I am eager to start learning and about the
only thing that I have not tackled in my life up till now is programming.
Any pointing in the right direction would be greatly appreciated,
Regards,
Jolly Roger