
Microsoft Virtual Academy - AndreyKarpov
http://www.microsoftvirtualacademy.com
======
300bps
4 hours old article, 4 comments before this one. Every one with a complaint.

I guess Microsoft can't even give away free training materials without
criticism.

~~~
UweSchmidt
They are not even complaints, just a mild general annoyance with the whole
Microsoft thing, happens often on HN. Nothing wrong with it, except:

Since I happened to have subscribed to some of MS's tech stack, I would find
it interesting to read about specific problem with MS tech. For example, RoR's
security and performance issues are discussed in great detail here, may I
assume that Microsoft MVC 5 (as a direct competitor to RoR) is scalable,
secure and well designed?

~~~
simplyinfinity
I'm writing a multitenant (serving different domains)hosted CMS with mvc 4
(will update dlls to mvc5 and code to async soon ). if your architecture is
good and you know how to do caching you will be good to go for many users to
come :) (asuming you have nginx in front iis is simply not designed for that
purpose)

~~~
tracker1
I have to disagree here... IIS does extremely well with static resources, and
tends to tie well into the file system caching. If you don't need to go
through so much as say HAProxy or Varnish in front of IIS, I wouldn't really
bother with nginx, unless you use nginx as a reverse proxy to several IIS
servers.

.Net as an application stack has some weight to it, so fronting several .Net
servers with nginx makes sense. Just wanting to point out that putting a
reverse proxy in front of your application before, or unless you need to and
already have the infrastructure in place, don't do it. And, again IIS does
very well with static resources, and Application Request Routing (ARR, which
is an IIS reverse proxy system) does really well also. I've used ARR a number
of times to front node.js based apps (API services) with IIS.

Don't get me wrong, if you have nginx servers, and want to reverse-proxy for
load balancing reasons, go for it. If you are simply wanting to improve
serving static resources, IIS does very well here. Mixed loads are what tends
to drag things down.

~~~
UweSchmidt
That little sub-thread was...ok. Informative, but a bit low on the drama.

Still no dark clouds over that Visual Studio icon. Microsoft might be "dead",
but the "Developers Developers Developers" warcry echoes on, and the cushy
jobs and well-paid freelancing gigs will be there for many years to come!

~~~
tracker1
That's funny... where I work now, most new development is being done in
node.js, with a migration strategy to get most of our backend (for the apps I
work with) onto node.js by the end of the year (from .Net) ...

I've been pushing for node.js (as a JS, and node fan) for the better part of
the past 5 years now (since node started)... So, definitely not tied to MS,
but do make my living on supporting their tech stack, for the time being.

I just wanted to point out that simply fronting IIS with nginx is a flawed
idea, unless you have reason to do so, and/or already have the nginx
infrastructure in place.

------
rbanffy
What one person calls free online courses, others call marketing materials.
The knowledge obtained in most of them is not easily transferable to other
technology stacks.

~~~
zeroDivisible
As much as I understand what you're saying in here (and I'm not defending
Microsoft, because it's not my favourite tech company), would you expect them
giving courses about J2EE and how to use Erlang?

~~~
rbanffy
I don't know about Erlang, but a lot of J2EE deployments are on Windows
servers. It would make some sense even if the goal was to sell Windows
servers.

~~~
zeroDivisible
Touché, I must say:)

You're right about deployments of J2EE on Windows servers, my point here was
that they might have guides on how to tie some knots together to make Java <>
Windows play nicely, but I wouldn't expect too much. After all, Microsofts
target is providing you with full solution to your business needs.

They need to start giving free guides, giving software (BizSpark) might not be
enough if people don't know how to use it. And as much as I dislike some of
the policies which Microsoft has, I would be lying when telling, that I didn't
found pleasure while working with tools like SQLServer or the.

Also, as tracker1 said below - I'm also surprised with node. They know that
getting some other languages (ruby, python) to work on Windows can be a bit
"hard", especially in production deployments (try using some tools written in
ruby, like veewee + vagrant + virtualbox combo), you would expect that they
would at least advertise nodejs more.

~~~
rbanffy
There was a time Microsoft made a lot of noise about PHP being a first-class
citizen in the Microsoft stack. There should be something for them too.

Unfortunately, this is much more a tool for extending their lock-in than one
to educate professionals about the current state of the art.

------
RamiK
Seems decent enough to me. If I can park a non-tech staffer on an Excel course
for an hour instead of having to hold his/hers hand and explain how a
spreadsheet works I call that a win.

~~~
nocoment
I hadn't thought of Excel, good point. But I'm not sure which of these Office
classes it is hidden in?

I'm also always looking for HTML/CSS/JavaScript classes that might reach non-
Programmers. I might sit someone down in front of:
[http://www.microsoftvirtualacademy.com/training-
courses/html...](http://www.microsoftvirtualacademy.com/training-
courses/html5-css3-fundamentals-development-for-absolute-beginners)

... and see what happens.

~~~
tracker1
I was thinking the JavaScript for absolute beginners also looked like a good
one for getting non-programmers into.

I don't think that JS is necessarily the best learning language, but it's
definitely about as wide spread as it gets (being out of the box for every
modern OS that comes with a browser).

------
teddyh
They were already giving their products to schools for free (or very cheap),
and encouraging classes to be specific to Microsoft products. This is merely
the logical next step.

~~~
tracker1
I would think this would probably have come before some of the school deals. I
don't feel that this is a bad thing in general, and honestly far better than
some of the backroom deals they've done.

------
chrislomax
I signed up as it does look interesting. Some people say it's been round for a
while, I didn't know about it.

Tried to sign up and got a "Federation error"! Excellent

------
hedwall
Is it some sort of affiliate link? (?mtag=XXXXXXXX part)

~~~
sergiotapia
Yes it's for an MVP user with ID XYZ, submitter submitted the link with a
referral.

------
chris_wot
They have a hell of a lot of technologies. But how many of them are going to
be around in the long term?

~~~
martiuk
You'd be surprised, since the company I work for uses Microsoft for nearly
everything, they'll gladly jump onto anything Microsoft technology-wise. Heck
I had to convince most of my colleagues that an open-source library wasn't the
end of the world.

------
oakwhiz
Some of these courses are not really that great - sometimes you learn more
from the help files and manuals...

~~~
tracker1
And some people need more hand holding, especially dipping their toes into
waters they've never been in before.

------
merrua
These have been here for ages? Most of these are not new?

------
graycat
Okay, I watched the first Visual Web Developer (VWD) video. Questions for
anyone out of the first grade with this stuff; four questions:

(1) I'm building a Web site where the server side code is in Visual Basic .NET
with use of classes from the .NET Framework and also from ASP.NET and ADO.NET,
but as far as I know I'm not using the 'framework' of 'model, view,
controller' (MVC) and, so far, see no such need. What's the big deal of MVC?

That is, the code for one of my Web pages has standard, 'reserved named',
ASP.NET 'event handlers'

    
    
         Sub Page_Init
         Sub Page_Load
         Sub Page_PreRender
         Sub Page_Unload
    

So, when I need to do something, say, with SQL Server database or communicate
with a server in my 'server farm', e.g., my session state server and two more
I have, I just write a function in the code of the Web page and call it from
an appropriate one of those standard ASP.NET event handlers.

Question 1: I see nothing wrong with this approach to 'code organization' and,
thus, am missing the big deal of MVC. What the heck am I missing about the
value of MVC?

(2) [Long question] What am I missing on The video explained how the VWD
'integrated development environment' (IDE) is easier to use as something to
type into than Microsoft's Notepad. It's also easier to use than a sharp stick
on a wet clay tablet!

But I don't type into Notepad and, instead, use my favorite programmable
editor I've used for essentially all my typing for some decades, KEdit. That
editor is a PC version of IBM's mainframe editor XEDIT, and the macro language
is Mike Cowlishaw's elegant Rexx.

From all I can see writing code, KEdit looks much better than Visual Studio,
especially since my project 'folder' is really simple and easy to understand
and since I get to write macros to automate some work whenever helpful. The
times I looked at all the files Visual Studio creates for a 'project'; they
were a lot to understand; I didn't understand them; and I fear that in case
there were problems I would have to understand them. Bummer.

E.g., here's a variable: What is its type, that is, where is its Visual Basic
(VB) Dim statement, and what is the scope of the variable, i.g., where the
heck was it declared? Where else have I used this variable?

My guess would be that any good, programmable editor could be as powerful as
KEdit or better -- Emacs anyone?

E.g., some of my comments are really 'code section delimiters' recognized by
some of my KEdit macros and, this way, I can get some easy views of the
overall organization of my code, e.g., for scope of names.

E.g., my most recent nice KEdit macro is BEIDC for 'begin, end insert dated
comment'. So, I get, say

    
    
         '    BEGIN Modified at 11:31:29 on Monday, February 17th, 2014.
         '    END Modified at 11:31:29 on Monday, February 17th, 2014.
    

and then type code and comments between these two. Another macro lets me see
all lines with, say, the fourth token on one of those two lines, and that
operation is sufficient for me, given one of those two comments, to move to
just where the other one is.

And I have macros that make use of KEdit's 'point' facility that lets me give
names to 'pointers' to particular lines. One macros shows me all such
'pointers' and saves them to a file for loading, say, the next day. So, with
these pointers, I can jump around in a file quickly. So, maybe the code I am
writing needs to draw from three other places in my file; so have four such
'line pointers'. Works well, and a dozen more lines of macro code can make it
work better.

For 'Intellisense', from all I can see and saw in the VWD video, no thanks:
For the classes in the .NET Framework, there are some thousands, my guess,
20,000+, Web pages of documentation at Microsoft's MSDN Web site. So, before I
use a .NET class I download the relevant Web pages of documentation from MSDN
and, for each such Web page, make a little abstract. I put the abstract in one
of four simple text files (one file for each of Windows, VB, TCP/IP, etc., and
SQL Server) I maintain with KEdit. Currently I have 5000+ such Web pages and
abstracts and can find relevant documentation quickly just by using the KEdit
search tools on the text files with the abstracts -- each abstract has both
the URL of the Web page at MSDN and also the tree name of the Web page on my
hard disk.

In my code, for crucial such Web pages, I put a VB comment with the title of
the Web page and the tree name on my hard disk of my downloaded copy of the
Web page. Then in my editor, one keystroke displays the Web page. So, if I
want to check something in the documentation, it's one or a few keystrokes in
my editor, and, then, I get the relevant Web page with essentially the most
detailed documentation Microsoft has. Also relevant is my earlier code with
tested uses of that .NET class; the way my work is organized makes it easy for
me to find such code. Of course, I also have files of notes, old programs, and
old test programs and can also have the corresponding tree names in my
comments. I'm not getting just why, net, in practice, 'Intellisense' is better
or as good.

My code is just awash in comments at various levels, much like writing a
technical paper: For me, when I return to some code six months later, those
comments are a great advantage. But writing those comments makes good usage of
the power of KEdit, my macros, and even my usual spell checker -- with Visual
Studio Web Developer I'd miss such functionality.

I do not like the way Visual Studio uses the screen and makes use of many
small windows. Instead, I just use the window management facilities of
Windows. Typically I have a dozen+ windows on my screen, and I keep them
organized partly with some code triggered by one icon in the UL corner of the
screen; then all the windows maintain their Z-order but are arranged so that
the UL corner of each window is equally spaced on a line from the top center
or so of the screen to the left center. Then at least a little of each window
is visible, and I can see all of any window easily from just a slight change
in the Z-order without moving any of the windows.

Net, the video made Visual Web Developer look like a big step down from just
my usage of a good text editor.

Question 2: What am I missing on why VWD and Intellisense are better than what
I'm already doing?

(3) Hearing the title Visual Web Developer, I guessed that the software was a
way to position 'controls' on a screen, set values for relevant HTML and CSS
attributes, e.g., fonts, colors, borders, and then have the ASP.NET code for
those controls written automatically or some such.

As it is, if I have a complicated Web page to lay out, 'design', then I use,
say, Microsoft's PhotoDraw to decide what the page should look like.

Question 3: Are there better tools for designing Web pages than just something
like PhotoDraw? What are they? Are there tools that would take such a
graphical design and generate the corresponding ASP.NET class instances and
class method invocations? What are such tools? Are they actually helpful,
worthwhile?

(4) The VWD video was writing JavaScript to generate a text box. Curious.
What's the point here? While Microsoft's ASP.NET has written some JavaScript
for me, so far I have yet to write a single line of it and see no need to.

My guess is that the JavaScript, running in the client's browser, adds the
text box to the 'document object model' (DOM) at the client.

Question 4: Is this so? Or is the point that the JavaScript code actually runs
on the server and generates the HTML and CSS 'mark up' on the server and does
not send that JavaScript code to the client?

~~~
nswanberg
Assuming these are genuine and not the world's longest rhetorical questions:

1) There is nothing wrong with your approach. There is nothing that can be
done using ASP.NET MVC that cannot be done with the ASP.NET Webforms pattern
(I'm not sure if there is a generic term for the single-file pattern that
classic ASP, JSP, AOLServer, etc use). You are smart and working alone, and
quite likely the innovations in your application will not be made in the way
in which you concatenate strings to generate HTML.

2) Again, you are not missing anything by using your years of experience with
KEdit and Rexx, except possibly a job working on internal HR applications at
an insurance company. Intellisense and VWD are tools designed for programmers
with a range of experience to be productive enough so as not to be a net loss
for their team. I make websites with ASP.NET MVC and use Visual Studio to do
it. Would I consider KEdit? Probably not--I lack your experience with KEdit,
and when I want to deal exclusively with text I use Emacs. And why use
intellisense? Your method of creating abstracts for the .NET class library is
a great one, and one that a lot of people could learn from. But that is not
reality in the everyday .NET development world. Intellisense allows those
developers to navigate both the .NET libraries and their teammates' ad-hoc
classes.

3) I'll pass--I didn't watch the video.

4) Almost certainly the text box was generated as an example. It's possible
that most sites using javascript nowadays do so only because yet other sites
use javascript. But where javascript is used well it is indispensable. Part of
the original appeal of both Google Maps and Gmail was the pleasant user
interface enabled with javascript. If your site is a means to an end and the
users are willing to put a lot of effort into the result--say, as an extreme
example, a form that takes some account information and literally gives the
user money--there is little you could gain from javascript. But if you want to
do what you can to make a user's experience a pleasant or even delightful one,
javascript is frequently the best way to achieve that.

~~~
graycat
Many thanks for your feedback and judgment.

No, the questions are not just rhetorical and, instead, are fully real for me.

Yes, so far, at least for my version 1.0 live site (soon, soon, soon!), it
seems to me that my simple HTML and CSS without any JavaScript from me will
provide a good enough 'user interface' with a good enough 'user experience'.
One advantage of my approach: It's dirt simple for the user.

Yes, the user interface of Google Maps is astounding, but I did have to
download and enable a Firefox plug-in. I recently used Google Maps to find the
house I grew up in, the house of my high school girlfriend, the house of my
wife's family, my current house, etc. Amazing work. My Web site needs nothing
like that.

So, my site has nothing that pops up, pulls down, or jumps around.

The Google home page was long very simple -- just type into a 'text box' and
hit enter and get back some pages of links with some short descriptions. Now,
of course, apparently each keystroke into the text box goes back to a Google
server which does amazing things and updates the screen, sometimes once for
each keystroke -- nice programming, timing, etc., but it will be a long time
until my Web site needs such nice refinement.

