This is the first article of the history of Arex. I will narrate every month our key steps, failures and successes in order to help other entrepreneurs.
I hope this helps founders and people thinking about launching a new business to avoid some of the pitfalls. I will keep on writing brief monthly recaps to bring our experience and help society build successful companies that create value.
In the future sections the rest of the Arex team will be invited to write and share their ideas (CEO/CTO/CMO's point of view, Investor point of view, Intern point of view, etc...).
Thank you for taking the time to read, and thank you to the Arex Real Estate Exchange team for all the hard work that you put into this family every day.
Hey there! I've just started learning to code for building web apps (I know about Fortran 90, it doesn't fit very well on the browser haha), and it took me a while to decide. I looked up in an endless number of hacker websites, but at the end I'm sorry for betraying Python lovers... I'm learning ruby on rails..!
I've just started learning, please tell me If it's best to learn python (I'm not looking for an easy language, but for a powerful and versatile one :) Something to develop some ideas I have..
While Python has a healthy web dev ecosystem, Ruby's feels much larger to me. That's almost certainly because Rails is so wildly popular. And Rails is an excellent, mature framework. So for web dev, I would consider Ruby the winner.
Python is the clear winner for scientific computing. That's not really due to anything
inherent in the language. It's an ecosystem thing. If you were using Fortran before,
you might be working in a problem domain where Python dominates.
Both are excellent for miscellaneous scripting work. E.g. reading in a CSV file and doing something with each row; batch-processing a bunch of images; renaming 1000 files according to some ruleset; gathering some system data and sending nightly status emails.
In terms of syntax and features, they're very very similar. Python has meaningful
whitespace, which you may like or dislike. (I think it's good for enforcing proper
formatting, but you're free to disagree.) Ruby has multiple ways of expressing the
mathematical concept of a function (methods, blocks, and procs), which has its pros and
cons. Both have metaprogramming facilities, though I find Ruby's more pleasant. If I remember correctly, it was in large part the metaprogramming that made DHH pick Ruby for Rails.
I kind of see what you mean :) at my university they announced a python course for developing Computational Fluid Dynamics programs (aerospace engineering), so my first vision of Python wasn't too much for web development but for engineering/scientific programming like fortran is. Although it's a popular choice for web apps. After having worked with fortran I found a bit more attractive Python because of all the indentation and syntax style. I also read that Paul Graham likes a lot more python haha
But many other readings and the fact twitter and groupon were coded in ruby, made the choice! I've read that twitter now is moving to scala, but as there are a lot more resources out there for learning ruby/python, I kicked it out of the list.
I like ruby, sometimes it seems a bit confusing when there are many ways to express the same thing, but it's approach to natural language is helpful.
Thank you all for your quick responses! It's a pleasure to join the HN community!!
> While Python has a healthy web dev ecosystem, Ruby's feels much larger to me.
It's funny because I actually feel the opposite: Ruby is mostly a niche language for the web community, whereas Python is now mainstream in so many different areas (graphics, scientific, sysadmin, financial...).
I've yet to see a non-webdev tool embedding Ruby as a scripting language, while Python is now featured in office suites, spreadsheets and enterprise software. Anywhere simple and clear syntax is more valued than metaprogramming features, Python is likely to appear at some point.
I think we have almost the same opinion, actually. I said Ruby's "web dev ecosystem...feels much larger to me." I agree that Ruby's strongest niche is web dev. And I think it has an edge of Python there. Outside web dev, I don't see Ruby dominating any particular niche.
It's not a Rails vs Django feature comparison that gives Rails the edge. Convergent evolution means they're pretty much on par with each other all the time.
The difference is in the size of the ecosystem as a whole. The Ruby web dev world appears to have more (or more visible) participants. Which affects things like Stack Overflow, web-specific packages on Github, blog posts, etc.
It's not an order-of-magnitude difference, as far as I can tell. But still significant.
It was particularly those web specific packages on github that I was curious about. For example, is there a package for doing CAPTCHAs for rails that's better than all of the ones for django? Better admin apps? Better apps to help you integrate with bootstrap more easily? Or create REST interfaces?
These things would make a huge difference to productivity if one platform had more (and better) of these things, but I haven't noticed that to be the case.
Welcome to HN! Ruby is a good idea for webdev but keep in mind that Python is also dominant in other domains of computing in particular scripting and scientific computing. So in my opinion for a beginner Python is more future proof than Ruby [activate language-flamewar-prevention-daemon] and if you later add a system-language (e.g. C) and a modern general purpose language (e.g. Haskell or Scheme/LISP) to your repertoire you are in a very good position to tackle most kinds of software development problems.
Or Emacs Lisp, if you don't have a specific project in mind and/or aren't already heavily invested in a text editor. As a programming language in and of itself, it's not a greap lisp, but it's a great practical way to learn lisp while you're customizing your text editor.
Either. They're not really that different from the other. I use 2, but I've used 3.. no issues. It will be an easy move as an enduser programmer when Python3's time in the sun arrives (and it may never).
Ruby is great for webdev, RoR is insanely popular so if that's your route you'll do fine. Ruby doesn't really do anything else well however, Python is pretty much a jack of all trades with a massive library ecosystem. It's used in scientific computing(numpy), web dev(django, flask etc.), game development(pyglet pygame), and a ton more areas. I'd say learning python is better in the long run.
I really like Python but I think there's nothing wrong with continuing to learn Ruby and Rails. Be sure to learn both Ruby the language and Rails the framework, there's more to Ruby than Rails. You'll likely also want to at least get your toes wet with Javascript so you can write native code for the client side of the browser, while you're learning that you'll be comparing with what you've learned with Ruby and from your previous experience with Fortran.
After learning those picking up Python will be fairly easy. Again, you'll be comparing with what you know, finding differences and similarities.
Don't worry too much about finding the perfect language, it doesn't exist. Spend your time building nice things in languages and frameworks that are good at at what they do. Be ready to try new things, you might like them, they might work well for a particular task or have a great ecosystem to accomplish specific things.
Ruby is perhaps more dominant than Python in web development. Not that Rails is necessarily better than Django, but it seems there are more Rails developers than Django ones. However Ruby seems to be pretty much confined to web development and deployment tools. It also makes great DSLs thanks to its block syntax. However in general Python is more popular than Ruby.
One reason is that Python is used for system programming (e.g: the Linux apt system), desktop applications, big data (thanks to numpy) so you might find it a better investment for general purpose software development.
Another reason, which maybe explains the first one, is that Python looks more similar to C++/Java. Basically it's a simplification of those languages (the {} pair traded for a single colon, no type declarations, etc) plus some handy shortcuts.
Ruby is from a somewhat different lineage (Smalltalk) and it shows in many places (e.g. the do |variable| ... end blocks). It can be used to write more natural language looking programs and combining that with some metaprogramming sometimes both amazes and unsettles programmers that come close to the language for the first time.
I suggest that you learn a little of both of them, working on the problem you want to solve, and decide by gut feeling what you would like to work with. I went the Ruby way because I can't stand some of the syntax of Python, not that Ruby is perfect.
There's really not much difference between Ruby and Python. I prefer Python and would argue it's a little more versatile (at least in terms of library support - people do command line scripts and scientific computing in python whereas Ruby is quite webdev-focussed) but honestly, who cares. Pick one or the other, learn it, have fun with it, use it to solve problems. And then make your next language something radically different from either of them (Haskell?)
I would not worry too much about making the "wrong" choice between Ruby and Python. I found it fairly easy to learn Python after coding Ruby for a year. Have fun!
Python/Django and Ruby/Rails are both clean frameworks and have fantastic communities. When I did the "Hello world" on both I was drawn to Python/Django. When it comes to moving away from the framework I tend to like Python more than Ruby. But it's just personal preference.
In addition, I feel like python tends to have a more consistent, but somewhat more verbose API in libraries and for frameworks such as web development frameworks. A strength and a problem that ruby has over python is that the syntax and language are more flexible, which both makes it harder to debug but also faster to develop and prototype in as compared to python.
When you say you've just started learning to code for building web apps, do you mean you
(a) already know HTML/CSS/JS and now want to learn a server side language, or that
(b) you are going from no experience straight to server side programming?
Regardless of whether you learn Python or Ruby, there is practically no way around having to learn HTML, CSS, and JavaScript for building web applications. You will be reading/writing HTML/CSS/JS in your Python or Ruby projects.
So if you have no prior HTML/CSS/JS experience, I would prioritize those skills first. Otherwise you will learn Ruby or Python then be disappointed to discover that browser technology is a giant hole in your skillset, impeding you from doing the useful things that got you to start learning in the first place.
You can do great things with just HTML/CSS/JS, especially since the browser environment supporting dynamic client-side applications in JavaScript has become so powerful.
Then when you're finally doing something that genuinely requires that logic and/or data be hosted on a server, managed by server-side tools, your knowledge of browser technologies will provide a solid foundation for stepping into that ecosystem.
If you already know HTML/CSS/JS, Ruby vs Python comes down largely to personal taste and whimsy. There are indeed differences, but the differences don't matter till much later, if ever. The greater danger is not that you will learn a language that isn't future-proofed, but that you could waste far more time picking what to learn than you ever might have wasted by picking the wrong language, especially since there isn't truly a wrong choice between two great languages. The debate between them is largely a religious war.
Since you seem focused on web apps, and have already started learning Rails, stick w/ROR. You're on a great path and your current choices won't hold you back. Good luck.
PS If you're interested in learning HTML/CSS/JS, I am thinking of teaching these subjects to beginners (no charge of course). PM me with a contact if interested.
Hi, I'm afraid it's (b). I have no web development experience.. It all started last year when I had an app idea, I started developing it with some computer science students but I realised that if I'm the creator of the idea and I cannot build it, I can only be like the commercial guy in charge of making money out of the programs those students make! And that wasn't the purpose! So now I've just got into web development from cero (fortran 90) to be able to create a kind of prototype of the product, so it's exactly as I imagine it.
I've started with the ruby course on codecademy, it seems it's just like a fun introduction to the ruby syntax. When I finish the codecademy course I'm thinking about going into "onemonth.com" for learning rails, and codeschool after that..
Thank you! I'll get started with those languages as well :) I'm focusing on web apps, but I'll have to use JS to take the idea to phone app (using Titan from appcelerator)
By the way! Thanks for the invite to the course! I'll contact you as soon as I find out how to send a PM haha
Most of the time (unless you choose something horrid like PHP) the language doesn't matter that much. Pick one (Python and Ruby are comfortable for learners) and stick to it while you learn the basics. Research on data structures, algorithms and the like. Have fun.
By the way, since it happened to me: if you find Rails to be too complex for what you need, there are more lightweight alternatives. Don't get me wrong, Rails will get you up and running fast; but when I was a beginner, it left me with the sensation that I didn't really know what I was doing. Using more lightweight frameworks, like Cuba or Sinatra, can help with that.
It is perfectly fine to learn ruby; Rails is one of the nicest frameworks to get started with --I do prefer python and django, but rails is pretty nice too
I hope this helps founders and people thinking about launching a new business to avoid some of the pitfalls. I will keep on writing brief monthly recaps to bring our experience and help society build successful companies that create value.
In the future sections the rest of the Arex team will be invited to write and share their ideas (CEO/CTO/CMO's point of view, Investor point of view, Intern point of view, etc...).
Thank you for taking the time to read, and thank you to the Arex Real Estate Exchange team for all the hard work that you put into this family every day.