views:

130

answers:

5

Hi Guys, I love SO and have been using it for the last 2 years. I've never posted any questions on it (because I found most answers though SO's search).

I have high hopes for this question.

I have been a .NET developer for the last 7-8 years (ASP.NET, ASP.NET MVC etc) and now i want to learn something new, especially outside Windows/Microsoft.

I have set aside 15 days where I am ready to give 4-5 hours daily.

Target is managing an Ubuntu VPS and hosting one self build website on any opensource stack (python or ruby).

Now I need help from all the open source community to get into their world.

Please help me.

+2  A: 

Your 'question' is quite vague, but from what I can understand you want us to suggest what stack you should look at in moving away from Microsoft technologies? While this is quite subjective (everyone likes technologies for their own reason) I can give you my own recommendation.

Personally, I am a web developer (well, most of the stuff I do is web development), and I originally started off with ASP.NET WebForms and so on. I started looking at ASP.NET MVC when it came out but then decided to give Ruby on Rails a go and pretty much never looked back.

There is a big difference in moving from Microsoft tools to other tools - if you rely a lot on autocomplete then you might be a bit disappointed with the tooling for the more dynamic languages - however there are a lot of good references available both online and for offline consumption.

One thing you might want to consider is checking out the PeepCode screen casts for both Ruby on Rails (their Rails stuff is a bit behind now that Rails 3 is out, but they are catching up) and also Node.js which is becoming popular in some camps.

There are also a number of tutorials available for this stuff too: http://railsnotes.com/rails-3/

My main recommendation though is to be comfortable with the core language (Ruby) and its idioms, before you try to understand the framework. You might love the framework but dislike the language which will just work against you.

Anyway, this is just my opinion - the main recommendation is to not worry too much about the best tools etc to use first, just try a language and if it doesn't work with you, move on to another one.

Good luck!

Matthew Savage
Matthew makes a great point about autocomplete. A few years ago when I moved from C# to Ruby (and later to Python), I couldn't imagine life without Intellisense. After all, the editor types half the code I produce, it was amazing! Later I came to realize that while having my editor type half the code for me means it's a great IDE, it also indicates the language is too verbose and clunky. I don't even use IDE's any more, and since I'm using less verbose languages these days (Scala, and Python) I don't miss it like I thought I would years ago.
Unoti
Agreed on the autocomplete comment. Am coding mostly C# at work and mostly Ruby/Rails at home, and with Rails I desperately miss the code completion that you lose with dynamic languages.
SamStephens
+5  A: 

It's pretty brief, but this is what I'd do:

  1. Install Ubuntu on my desktop machines, netbooks and laptops and play for a day.
  2. Read about the philosophy of open-source, what it's all about (it's not just free).
  3. Do a Python tutorial.
  4. Choose a webserver technology, the most popular one is probably Apache.
  5. Turn some local machines into webservers, and begin creating small pages in Python.
  6. Read up on a complete Web framework like Django (if that's your thing).
  7. Begin writing and testing a site on local machines.
  8. Read up on SSH, and perform the configuration required on your VPN.
  9. Transfer a stable snapshot of your website to the VPN and test.
  10. Repeat steps 7 to 9 until 15 days is over.
  11. Never go back to Windows, Microsoft, or any other barfware again.
Matt Joiner
I feel like calling it 'barfware' is an overly biased statement, but I agree with 1-10 ;-)
SapphireSun
Happy faces cool my temper. I feel I could almost remove point 11 if the thought didn't make me nauseous :)
Matt Joiner
@Matt : Alright, then have a downvote from me :)
Andrei Rinea
@Andrei Rinea: Take a look at some of my lowest voted questions/answers if you'd like to admonish me some more ;)
Matt Joiner
No, Matt, I'm not a psycho. I just disagree with a part from this answer so I expressed my opinion using the "down arrow". In fact I (up|down)vote an idea not the man.
Andrei Rinea
And the smiley at the end of my first comment was there because you said it tempers you :P
Andrei Rinea
+1  A: 

There are a lot of different ways to do this depending on what you'd like to accomplish. This is what I'd suggest.

  1. Set up an Ubuntu server. If you have a trash machine available, download an ISO for Ubuntu, and install it on that machine. The advantage of doing this is that you don't have to pay $10/month while you're figuring out what you want to do. Alternatively, you can go to Rackspace and get a small server set up for around $10/month, but I'd save that for when you're ready to deploy.

  2. Install Django and MySql, or Ruby on Rails and MySql, and start doing the tutorials. I've used both, and they're both great. I'm more of a Python guy than a Ruby personally, so I prefer Django, but both Rails and Django are highly approachable with excellent tutorials.

Seriously, anything you want to do, there are tremendous resources to help you do it online. The single hardest part is jumping in and doing it and getting started. It's easier than you might think-- with ubuntu it's just a single command to get a working mysql installation going (sudo apt-get install mysql). Everything you need to know is just a Google search away. So the most important thing is to get over the initial hurdle and dive in.

So download Ubuntu (10.04 or 10.10, either one), install it, and get going!

Unoti
A: 

First of all, I think that you need to take this a bit slower - you are talking about not just a new language and framework, but a completely new stack with a different way of thinking. Basic tools and assumptions are quite different between the Open Source and MS worlds.

Whichever Open Source stack you use, it is going to take some time and a couple of projects for you to fully adjust. There may be points where your existing experience might actually cause you a bit of frustration, because something that looks similar to what you already know will not follow your expectations.

Perhaps treat your first project as a trial run and don't worry about testing or deployment - just go through a screencast or tutorial and use SQLite so that you don't have to think about the database server. This will give you an overview of the platform.

If possible work with someone else for your second project, or find an appropriate mailing list, forum or IRC channel and don't hesitate to ask questions if you find that there's something you are struggling with.

The tools for deployment and maintenance are great but these areas tends to much less well-covered by books and blogs, so don't be surprised if you need a little help when you reach that point.

Stuart Ellis
+1  A: 

I think your transition will have two-parts:

  1. Get used to running GNU/Linux, or another free software OS, as a user. Even though I'm not a professional programmer myself, I'll allow myself to imagine how hard it must be to change OS and frameworks when you're used to doing something one way all day long for many years. Don't underestimate this! Make sure to spend some time getting comfortable with your OS as a user -- having an extra layer of unfamiliarity will probably only upset and annoy you.
  2. The actual developer stuff.

I'll focus on point 1, since others have already answered 2 well. Some unordered thoughts follow.

  • Make sure that you recognize that 1. will take time. You didn't become a Windows poweruser in a few weeks or even months, did you? As has been mentioned by others, a nice way to save time while doing this is starting to use the OS as your day-to-day one. Don't keep it far away on a VPS! Use it for browsing SO, use it for sending e-mail, use it for learning. Only then is it natural to start using it for developing. There is nothing like actually having a real problem to learn the tools neccessary to fix said problem. I'm sure you know this very well from your job :-)
  • Get acquainted with the differences of philosophy between Windows and your new OS. I'll mention two examples worth investigating and learning more about right away: 1: In GNU/Linux, a central package manager usually handles (almost) all of the software on your system. It takes care of updates and security fixes, and make sure you don't get a system full of cruft. For Debian/Ubuntu, the system is called apt, and there's tonnes you can read about it. 2: With such a nice package manager in place, shared libraries and dependencies in general can be handled properly -- there is no need for every piece of software to drag along with it everything it needs. Yes, disk space is cheap, but the Linux/BSD way is certainly a more æsthetically pleasing way of doing things.
  • As a developer, you probably have at least some interest in the general workings of the system, so get more than rudamentary familiarity with how your new OS works. I'm not talking about code-level stuff here, I'm talking about how it all "hangs together". For a developer such as yourself, a nice introduction could probably be had by trying to package a piece of software for your distro of choice (for Debian/Ubuntu, there is a nice guide).

To sum it all up: Take it slowly, and recognize that you didn't learn to be efficient in your current setting overnight. Treat it all like learning a very unrelated foreign language.

As for the actual developer stuff, point 2, you'll certainly discover that Python (and probably Ruby, which I'm not familiar with) feels much more at home in your new OS than in your old.

Edit: Another point I might add is that you should use the fact that you're a programmer in two ways. Firstly, when asking for help from other free software users, you'll tend to feel much more welcome if your question can be phrased in a technically accurate manner. Secondly, use the source, Luke; although it's not always a practical solution, don't forget that having the source code freely available and modifiable can be a real advantage for someone who's a good programmer.

gspr