Quote: "@Seppuku Arts
Great to see you still weren't able to escape TGC. Or maybe that's a bad thing.
Yes, I remember your switch to Unity/C#. Did you finish Abeyance?
"
Not finished Abeyance, I intend to, but I'd rather focus on getting a job doing what I like first, hence all this web dev nonsense, there's a lot of jobs in my area doing it and I enjoy it. My current job, however, I hate it.
Quote: "The whole bias towards Microsoft products is still a requirement in the industry. I wouldn't exactly say that's a bad thing, because Microsoft make some fantastic software development tools. I love MSVC's debugger, for instance.
"
I love working with Visual Studio and ASP.NET MVC has a lot going for it. It's also very secure and not too much of a headache to set up. There's also plenty of resources and information out there and a decent amount of documentation and support from MS themselves, which I suppose makes it attractive to businesses.
Quote: "Where I work, I've noticed a shift towards open source. Everyone in R&D has always used Matlab, but since Raspberry Pi became popular, people have discovered Python. More and more I hear people talk about using Python instead of C# for GUI apps, or using Spyder - a Matlab alternative built on Python. I even had the chance to host a Python workshop for a group of people, which left a very positive impression. It's a pretty cool time to be working at this company."
I think people are less worried about open source, open source vs closed source each have their plus and minus points. But where I work, we're running systems in JSP, PHP and Ruby on Rails. But, when I look for developer jobs, it's ASP.NET that props up the most, but there's still PHP and Ruby ones and loads of businesses out there use OpenSSL, hence the issue with Heartbleed was so wide spread.
But, I run Linux so I can learn how to use any open source stuff I may be expected to in the future. I tried to steal our IT guy's job, but he turned down his promotion. I felt the only area I lacked knowledge in that was listed was on "Linux-based servers", but he was willing to teach it. Just annoyed he turned down his promotion, I had a good chance of getting it.
Quote: "My point being, it's a good idea to learn a little bit about the open source alternatives. Not only does it reflect extremely well on your resume, if you have knowledge over something upcoming, opportunities present themselves like there's no tomorrow"
Definitely, which is why I hope to tackle them once I've mastered ASP.NET, I have dabbled a little bit with Ruby On Rails, because we had a problem with it at work and our IT guy sent out a panicked email saying, "does anybody have Ruby on Rails experience?" I offered, but lacked experience and it was safer for them to pay a third party to fix the problem they had.
I can see why your friend swears by it, whilst it is strange and maybe a little be confusing at first, but it is a really streamlined approach, because it makes a lot of assumptions for you in regards to web conventions and cuts out some of the work for you.
ASP.NET MVC is similar in a respect, but then Rails uses the MVC (Model, View, Controller) approach to development, but it is so much more convenient compared to the alternatives. Essentially it creates a scaffolding for you, which you have the option to do in ASP.NET MVC as well. Plus the typical feedback people seem to give on using Rails is that "it's so much fun", my experience is limited, but I suspect they're correct. I don't know if it's the 'future' but it certainly has a place with PHP and ASP.NET, I sometimes see jobs advertised asking for it. Also, our repair center uses it at work for handling customer data and Twitter uses it as well, so I don't see why it can't compete.
But there's a lot of cool things about the MVC approach, unlike with HTML, you don't navigate your site with a URL, instead you have what are called action links that tie parts of your site together. These actionlinks are all done using C# code (or VB), not only can the be done in your Controller files (your C# source files)but thanks to the Razor syntax you can put these directly into View codes as well (where your HTML tags will be).
For example, this is a snippet:
@model WaywardStarFC.Models.Character
@{
ViewBag.Title = Model.Name + "'s Profile";
}
<h2>Profile</h2>
<fieldset>
<legend>Character</legend>
<div class="display-field">
@Html.Raw(Model.Profile)
</div>
</fieldset>
<p>
@Html.ActionLink("Edit", "Edit", new { id=Model.ID }) |
@Html.ActionLink("Back to List", "Index")
</p>
<h2>Stories</h2>
<br />
@Html.ActionLink("Create a New Story", "Create", "Stories", new { characterID = Model.ID }, null);
@foreach(var story in Model.Stories)
{
<hr />
<br />
@Html.Raw(story.Body)
<br/>
}
So HTML.Action link allows me to like to a "Create" page inside of the section called "Stories" with a label saying "Create a New Story" and creating a new variable 'characterID' to send to the query string part of the URL that can be retrieved by the 'Create' page to make sure that when it create a story that it makes it a child for the right character, so in effect I can list stories for each character on their profile. This approach is also strongly typed, which is useful when you're used to desktop programming and not web programming. So for a web page capable of displaying a table of content from an SQL database you're not actually doing a lot, but then you're using a 'foreach' loop to access this data and as you're using types taken from your model, you don't actually need to write any SQL queries either because your Models and Controllers will take care of that for you.
In fact, I don't have to do any SQL code this way, my model works exactly like it would if I'm creating variables in C# anyway, I would just need to create a type called a 'context' in order for C# to generate the SQL database and if one is pre-existing, I can reference these types to columns in the SQL database:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Character>()
.Property(c => c.ID).HasColumnName("character_ID");
modelBuilder.Entity<Character>()
.Property(c => c.Title).HasColumnName("ImgURL");
modelBuilder.Entity<Character>()
.Property(c => c.Profile).HasColumnName("Description");
//
modelBuilder.Entity<Story>()
.Property(s => s.ID).HasColumnName("Story_ID");
//
base.OnModelCreating(modelBuilder);
}
Ruby on Rails works in a similar fashion, but I don't have any code.