This week I'm getting ready to start implementing the new MyMuds.com web site. One of the issues with being a Micro-ISV (single developer) is that ongoing professional education is now up-to-you. There is no big company paying to send me to new conferences or workshops to learn new technology. If I want to learn something new, I have to take the time out to learn it myself. And if you don't keep learning new things, you eventually fall out of date, and customers will go away.
I've done some of this in the past year related to Vista and Delphi 2007. By updating to Vista and forcing myself to use it (against my will), I will end up with products that better support Vista. By upgrading to the latest version of Delphi and the latest versions of 3rd party components, I am able to keep up with the latest features and provide those in my products.
One area where I feel like I am falling behind is in Web Development. Part of my job is to maintain this web site, and make it easy-to-use for customers. Over the years I have learned ColdFusion, ASP, Perl, and PHP all by myself in order to provide discussion forums, ecommerce, knowledge base, crash-dump system, etc.
Now it's time for me to write a new web site that will be the main interface to MUD players who use CMUD. This will be a place to store and access your MUD sessions, both from a web browser and via the CMUD client itself. It will be a place to discuss MUDs and see which of your friends are online and what MUD they are playing.
This new site will be integrated with your existing forum account, and eventually integrated with your online store account for managing your product licenses.
So, the question is: Do I just keep using raw PHP to code this new site, or do I learn some new technology? In particular, is it worth my valuable time to learn about Ruby on Rails, which everyone seems to rave about when it comes to creating database-driven web sites?
One of my problems is that I'm a wimp. I actually like GUI IDEs. For all of my current web development, I use Dreamweaver. I'm fine with writing raw HTML in a lot of cases. And I write a lot of raw PHP. But I like the PHP syntax highlighting in the Dreamweaver editor. And sometimes when I'm updating a page like the CMUD Version History, I don't want to worry about raw HTML, I actually want to use the WYSIWYG designer page and just enter the new list bullet items for the new version of CMUD being released.
I've looked at a couple of Ruby on Rails demos, and it all looks fine for creating simple apps. But there is a lot of command line interaction going on, and a lot of raw Ruby code and HTML editing. So I'm wondering if there is any good IDE for Windows Vista that might help with Ruby on Rails?
I've looked briefly at the Ruby on Rails support in Aptana Studio, which also seems to have a PHP plugin. It would be nice if I could use a single IDE for both future and existing web projects. I'm a bit leery about open source software like this. I've seen a lot of open source stuff where "you get what you pay for" and it's intended for real geeks, or is generally unfinished and unsupported. Looks like Aptana has a supported Pro version, so maybe that would fit my needs.
I'm not very concerned about learning yet-another-scripting language. I've written code in enough different languages over the years and learning a new syntax is no big deal. And many times it gives me ideas for improvements to zScript (a lot of stuff came from Perl and PHP in zScript). So that would be a positive side effect for learning Ruby.
But I also don't want to waste my time. I'd hate to spend a week on this and discover that it's only good for demo-apps and not real-world web apps. I got burned on the CodeGears Delphi for PHP product last year, and don't want to make that same mistake again.
So, I'd be interested in the comments from anyone out there who does web development, especially anyone who does it professionally. Is RoR worth all of the hype? Or should I just stick with "good-old" raw PHP? And in either case, is it worthwhile to learn about some user interface libraries such as YUI (Yahoo User Interface) for adding things like a TreeView to the Zuggsoft Knowledge Base and using Ajax to make it faster and better?
Joined: 28 Sep 2000 Posts: 1395 Location: United Kingdom
Posted: Tue Mar 18, 2008 12:05 am
Well it's my time again to recommend ASP.NET, I suggest you download the express version to give it a try hence you lose only time not money. I use ASP.NET daily at work and I can point you at some of the stuff I have done if you want but it is very simplistic form type stuff, I can't point you to the higher end stuff since it requires domain login. I'm currently reading an AJAX for ASP.NET book so that I can spiffy up and speed up existing and future applications.
I know you have some issues with MS but try to spend a couple of hours looking into to see what is possible and what it is like. I think groups put work into extending the language support so you might be able to use PHP still.
Joined: 25 Sep 2000 Posts: 23379 Location: Colorado, USA
Posted: Tue Mar 18, 2008 12:41 am
Oh, I should mention that any solution *must* run on a Linux server running Apache. I haven't checked lately on their linux support, but ASP.NET used to be a Windows-only technology. I used ASP for the entire site many years ago when we were running on a Windows NT server, but since I switched to Linux, I have no plans to go back. The reason I choose PHP initially was because it was a cross-platform solution.
If you don't want to deal with raw HTML, why don't you try something like Drupal or Joomla? Those are PHP CMS systems that let you add/edit/delete content with a WYSIWYG editor. These also have a lot of 3rd party modules. I've been using CMS systems for several years now, and I just can't make myself go back to coding a web site from scratch again.
Joined: 25 Sep 2000 Posts: 23379 Location: Colorado, USA
Posted: Tue Mar 18, 2008 6:39 am
Quote:
CodeGear has an IDE for Ruby/Ruby On Rails.
Yeah, I know all about that from the last CodeRage conference in November. But given how badly I got burned on Delphi for PHP, I'm not taking their hype at face value anymore. And the comparisons I have seen between 3rdRail and RadRails shows that 3rdRail is pretty lacking, especially for an expensive commercial product.
The problem with CMS systems is that I still always end up writing a lot of raw code because they just don't have the modules/features that I need. After all, they certainly are not going to have a CMS module for doing the MyMuds sessions. So unless you are dealing with "standard" modules, you still end up writing a lot of your own code. The question I'm asking is whether this new code should be PHP or Ruby on Rails.
For modules like Forums, Chat, etc, I will use the existing modules that I already have on the zuggsoft.com site. We already use MX Portal on this site, although they no longer support the version that we are using, and I've customized it too much to ever upgrade their code. That's the other problems with CMS systems...it's hard to customize it and they stay up-to-date. I've had this issue for years with PHPBB. So these days I just lean towards my own code. If I've written it, then I can understand it and maintain it.
So I rarely deal with raw HTML on this site. All of the Knowledge base, etc, all use the same BBcode as the forums. But I still have to write raw HTML when I'm dealing with writing the HTML templates for various PHP scripts.
The Version History probably wasn't a very good example because that's one of the few pages that I haven't converted into a Module...I just have a habit of editing it in Dreamweaver.
There's also the Google Web Toolkit, http://code.google.com/webtoolkit/. What you do is that you write your web application in Java and then let GWT compile it to a set of Javascripts, and html files. You can also run the application in "hosted mode" and debug it using Eclipse.
Personally, I like symfony as my PHP framework of choice. It plays very nicely with WAMP, runs well on Linux (so long as you're not using PHP 5.2.5 with the include_path issues), and makes developing complex features a snap. I had trouble with AJAX on other frameworks, but this one made it very easy and smooth running. There are just too many good features to name them all.
Joined: 10 Oct 2000 Posts: 320 Location: Springville, UT
Posted: Tue Mar 18, 2008 3:32 pm
Zugg wrote:
The question I'm asking is whether this new code should be PHP or Ruby on Rails.
I say just stick with what you know already. Here are the arguments against Ruby on Rails:
No ramp up time to learn new technology
No fumbling around in new framework/language
This is a business need and time == money
You work for yourself, so no real need for marketability
Ruby on Rails is fairly new and not considered ready for heavily loaded websites
I would have to agree with bortaS here. I like php myself, and RoR really needs some time to mature. PHP is a very matured scripting language with a lot of support. I would wait a year or two before tackling RoR.
_________________ CrossOver: Windows Compatibility on Mac and Linux CMUD Advocate
Joined: 25 Sep 2000 Posts: 23379 Location: Colorado, USA
Posted: Tue Mar 18, 2008 10:25 pm
I think I have mentioned this before, but it deserves repeating...I'm something called a "scanner" (see Refuse to Choose by Barbara Sher). I love to learn. I learn new things quickly and easily. It helps motivate me and excite me about new projects.
So BortaS's reasons don't really apply much in this case. The fact that the MyMuds.com project might take 5 weeks instead of 4 weeks isn't really the issue. The issue is what the quality of the resulting site will be, how easy it is for customers to use, and how easy it is for me to update and maintain over the long run. If it takes me an extra week to learn a new technology that helps make the site better and more maintainable, than that is well worth the time. You can't just look at the "short term" view of "time == money". You have to take a longer view.
I'm pretty well experienced with traditional PHP methods. I've been using them on this site for many years now. And I know how much of a pain it is to keep the huge amount of code updated and working. For example, I've been wanting to add a "tagging" system to the forums so that people can search for keywords. I've also wanted to add "categories" to the Blog entries so that people can look at the list of entries related to CMUD, or the blogs related to Microsoft ranting, etc.
I've thought a lot about new features like that. And everytime I get excited about making those kind of improvements, I then look at the massive amount of PHP code behind this site, most of which I didn't write myself (phpBB, etc). And adding new features to that existing code is very very hard.
I'm pretty much stuck with what I've got (for now) just because of the huge amount of time it takes to improve the current code. I don't want to get into this same situation with the MyMuds.com site.
It's not often that you get a chance to start fresh. The MyMuds.com site is that chance. It has a different focus than the Zuggsoft site. The only requirements I have in the design that relate to the Zuggsoft site is that I want to share the login information so that the Forum login is the same as the MyMuds login. But almost any PHP or RoR solution will work with that...it's just a matter of interacting with the existing MySQL database, and that's easy.
It's also not about making myself "marketable". I don't care about that (which should be obvious by my use of Delphi for Windows development). What I care about is picking the right solution for the job. I like quality. I like elegance. And I like systems that actually help make a job easier and more maintainable. So far, RoR has a lot of those qualities.
RoR has been around for 4 years now (or so). From the limited amount of searching and reading I've been doing, I think it qualifies as a "mature" scripting language. If anything, Ruby itself (the scripting language part) has remained pretty stable. The Rails framework has undergone significant changes and improvements, especially in the 2.0 system (a *lot* of information on the Net is already outdated and still talks about the older 1.2 system). In fact, check out the latest TIOBE Programming Language Chart which shows Ruby at #10, just below Delphi and rising fast.
It's somewhat true that PHP is "a very mature scripting language". But in my mind, they made a mistake with PHP 5. I'd love to switch to PHP 5 because I love object-oriented programming. In PHP 4, OOP seems like an afterthought. It's like working with early C++. PHP 5 has a lot more OOP at it's core, but it's not fully compatible with PHP 4. With all of the critical PHP 4 code on this site, I don't dare switch over to PHP 5. The chance of something breaking is just too high.
On the other hand, OOP is an inherent part of Ruby. Just comparing scripting languages themselves, Ruby wins hands-down over PHP. PHP is like programming in C with lots of class libraries added to it. In fact, the best part of PHP is the huge number of library routines that are available. Ruby is a completely different animal. If you are not using to *thinking* in OOP terms, then Ruby can be hard to grasp. But if you are a hard-core OOP person like me, then Ruby looks like a breath of fresh air compared to PHP.
Ruby on Rails is a framework. So it cannot be compared directly to plain PHP. I think Larkin has the best response so far with his link to the symfony PHP framework. That's more like comparing apples to apples. And symfony is definitely something that I'm reading about, along with some other PHP frameworks, because that's really a better comparison to what RoR is.
Other than running on Linux/Apache (and preferably being cross platform), my main requirements for the MyMuds.com project is good support for AJAX, and a consistent framework for separating the program logic (business rules, etc) from the presentation. Most frameworks provide this (PHP templates, etc). In fact, the existing phpBB2, MX Portal, and xCart systems used on this Zuggsoft site each have their own framework and ways of doing this. But none of the existing frameworks work well with AJAX.
For example, I tried playing with the Knowledge Base (part of MX Portal and heavily modified by me). I wanted to make the tree-view of the help articles on the left into a Javascript UI component (like using the Yahoo UI components), and then loading the selected help article in the panel on the right using AJAX to improve the user interface of the online help system. Sure, I could do it. You can do anything you want with PHP and JavaScript. But it wasn't going to be easy...it was going to involve a lot of low-level coding. Using a modern framework, like the symfony one mentioned by Larkin would make this kind of stuff much easier. Easier to write and easier to maintain.
Last year I spent a couple of weeks writing the Zuggsoft Affiliate system. It took me about 2 weeks to write this, and it's really quite simple and crude. While I haven't actually installed any code or anything yet, just a couple of hours of looking at various demos of both RoR and some PHP frameworks shows that I could probably rewrite the Affiliate system in about a day and it would work better and be easier for customers. And that's the kind of thing that gets me excited about writing MyMuds.com using something new.
Sorry to go on so long about this. I didn't want to reply until I had taken a few more hours to read about some of this technology and get more familiar with its history and the current state of affairs. While it's true that PHP has a lot more available existing applications (like phpBB for example) that I could just take and use, the MyMuds.com site is not some "canned" application. It is a custom application, so the fact that RoR has less developed "canned" applications doesn't really matter to me.
OK, so getting into a real comparison between PHP+Framework and Ruby on Rails, here is what I'm seeing:
1) I already know PHP syntax and a lot of it's common library routines. Ruby is a completely new syntax and concept. But I actually dislike PHP and prefer the more object-oriented nature of Ruby. In either case there will be a framework to learn (Rails vs some PHP framework like symfony).
2) Ruby and RoR are relatively new (4 years or so). PHP has been around for a long time and is very stable and robust. More "canned" applications: CMS systems, forums, etc, are available for PHP compared to RoR.
3) There is no adopted "standard" framework for PHP applications. It seems that every application picks it's own framework (or doesn't use any at all). In the Ruby world, Rails is *the* framework. So even though there are fewer "canned" applications, the "gems" (plugins) for RoR tend to integrate better together. There are also existing RoR modules for integrating with existing PHP systems, such as PHPBB.
4) RoR has built-in support for AJAX. RoR was designed with AJAX in mind. AJAX support varies in different PHP frameworks.
5) Ruby is completely object-oriented at it's core. PHP is not, and real object oriented applications really need at least PHP 5.
6) Both are free, both run on Linux/Apache, and both have IDEs that run on Windows.
That's my summary so far. I'm still reading about all of this, at least for the rest of the day. Tomorrow I'll probably play directly with some specific frameworks. I'll likely test symfony as a recommended PHP framework, and I'll likely test Ruby on Rails and the RadRails IDE. I also want to learn more about how each system works with existing Javascript UI libraries, such as the Yahoo YUI stuff. After a day of "playing in the sandbox" then I'll decide where to go from there.
But this is important stuff. The MyMuds.com site is very important to the future of Zuggsoft, so I want it to be done right. Which means I want to take the time to research this to ensure that I'm making the correct decision for the long-term and not just doing something quick and dirty.
I love Ruby and I'm pleased you're giving RoR serious consideration.
You mentioned that you sometimes liked to use Dreamweaver and enjoyed the PHP syntax highlighting,
so I looked and found that there's a RoR extension for Dreamweaver called Rubyweaver.
I just installed it and haven't really checked it out, but maybe you might take a look.
While you're considering Javascript frameworks consider Extjs.
I messed around with it a bit last year and thought it was pretty sweet.
_________________ -Dharkael-
"No matter how subtle the wizard, a knife between the shoulder blades will seriously cramp his style."
Joined: 25 Sep 2000 Posts: 23379 Location: Colorado, USA
Posted: Wed Mar 19, 2008 1:30 am
OK, I have to admit that "love at first sight" really does exist. I've been reading an *excellent* new book titled Rails for PHP Developers. And I'm really loving what I am reading. I'm about one-third through reading the book, and I can already tell that I'm going to need to give RoR a serious trial tomorrow. This book is great at presenting a typical web application and the way someone might implement it in PHP. Having recently implemented the Affiliates system, their example really hits home. They go through each step and compare typical PHP methods with the methods used in Ruby on Rails.
In the chapter where they compare the raw PHP scripting language with the Ruby scripting language, I feel the same way I did when I first learned about Lua. Comparing Ruby with PHP is a lot like comparing Delphi to C. Not that big of a surprise considering that both Ruby and Delphi are object-oriented languages (Ruby actually much more than Delphi). A lot of thought has clearly gone into the design of Ruby as a language. When people say that Ruby is "elegant", they aren't kidding. And the way they handle complex OOP issues such as polymorphism or multiple-inheritance is really well done. Also, the ability to extend classes (even built-in classes like Integer and String) is really amazing.
When they actually start introducing Rails, it starts as a pretty standard and natural framework system. There are other frameworks out that separate applications into controllers and views, but what really strikes me about Rails is just the simple fact that it is *THE* framework for Ruby. I don't need to spend lots and lots of time testing and evaluating dozens of different frameworks. I don't have to worry about what PHP frameworks might be popular today, but non-existent in another year. Rails is it...take it or leave it.
For example, today I went to the bookstore (yes, I'm old-fashioned and still like real books). There was a whole row devoted to Ruby on Rails books. Yes, some of them were a bit old. I'd never buy a RoR book from 2006...not with all of the improvements. The book I mentioned above is from January 2008 and covers the very latest 2.02 release of Rails. But there were several other up-to-date books available as well. I might pick up one or two of them as reference books if I decide to adopt RoR, but for now the book for PHP Developers seemed the best place to start.
As a comparison, try looking for a good book on a PHP Framework! Yes, there were *two* rows of books on PHP development. Lots of "PHP and MySQL" books. But nothing about any specific PHP framework. There are just too many. No single PHP Framework has gained any dominance, so the book publishers have a hard time deciding what to publish...so they publish nothing. Yes, I can search the Internet and find various web sites about various frameworks. But this just isn't the same as having a single adopted framework for Ruby web applications that is well documented and widely used.
One of the features in RoR that I just *love* is the concept of URL routing. They specifically detach the URLs in your application from the specific filenames. In PHP, the URL points to a specific PHP script in a specific directory. If you want to change the name of the script, or change the directory structure, you have to change your links, and potentially break all incoming links (like from Google). The solution in PHP is to use Apache Rewrite rules, which is what I've used on this site in the past. But they are also a pain. This concept is already built into RoR and the resulting URLs for your application are very nice and user-friendly.
Anyway, I still have a lot of reading to do tonight. But I'm really loving it all and it is having the desired result of getting me very excited about making the MyMuds site. And possibly eventually updating a lot of the Zuggsoft site in the future.
Joined: 10 Oct 2000 Posts: 320 Location: Springville, UT
Posted: Wed Mar 19, 2008 2:29 am
Quote:
One of the features in RoR that I just *love* is the concept of URL routing.
That's was something that I really liked when I worked with a couple MVC (Model-View-Controller) frameworks with web based development. It looks to me like the root for this was Velocity, and later Maverick, both Java frameworks. I love being able to decouple a view from the actual physical web page. Saved me lots of headaches after trying to change stuff later on.
If you do anything with databases and RoR, check out Migrations. I'm a corporate database programmer, and all I could say was "WOW!"
It's really fun to be able to see your thought process in action. I really envy that you have time to do all this research. That's something that I would love to be able to do.
Joined: 26 Jan 2004 Posts: 5155 Location: United Kingdom
Posted: Wed Mar 19, 2008 6:33 am
Zugg wrote:
1) I already know PHP syntax and a lot of it's common library routines. Ruby is a completely new syntax and concept. But I actually dislike PHP and prefer the more object-oriented nature of Ruby. In either case there will be a framework to learn (Rails vs some PHP framework like symfony).
I wanted to add, though it might be a bit superfluous given your previous post, that "I like Ruby; I don't like PHP" probably deserves its own bullet point. From the way you talk about reading about RoR and learning new things, you can practically see the glint of glee in your eyes. It's hackneyed to the point of triteness, but it's true: you're like a young boy who's just found a gigantic new sweet shop ;)
Getting that excited about a project is very important. Given that most of your other bullets were "Ruby has the feature I want, or they both do", it seems like a pretty clear choice.
As I said, I love so many things about the symfony framework to list them all. Routing is one of them! I've been able to create development modules on a live site simply because the URL was complicated and unlinked (only known by me, basically) until I was ready to connect it to the rest of the site and only had to change a couple lines of code to make it live.
symfony also has a good library of plugins and making new ones is pretty easy. I've worked with other frameworks that made using "standard" code, such as phpBB or WordPress, difficult because of the model they were using. symfony lets you integrate anything you want and it still doesn't break their model because it's just considered something extra outside the model. For example, I used ExtJS components extensively on the last site I developed, with AJAX calls returning JSON data to populate the grids and other objects. It's pretty slick.
Another thing I love about symfony is the decoupling of the database from the data model. They use Propel for ORM stuff, and that means you can use the symfony script (does all kinds of cool things) to build an entire database from one or two YAML files (which have very simple syntax). Saved me literally hours of time in development and testing by allowing me to modify my database by changing a line in the YAML and then using symfony to rebuild the tables and repopulate them.
However, if you say learning Ruby is as cool as when you learned Lua, that sounds like something worth pursuing. Even though I don't get to use Lua much right now, I definitely found it to be a fun and easy language to use.
Well, considering what you've stated AFTER my previous post... I guess I would have to rescind my opinion :)
And I guess I'm more out of the loop than I thought, I had only thought RoR was about 2 years old now... *blush*
So.. if you like it, go with it. As you pointed out, an extra week isn't really that much of a drawback. Even if it ends up being two or three weeks I doubt anyone here will complain :)
_________________ CrossOver: Windows Compatibility on Mac and Linux CMUD Advocate
Joined: 25 Sep 2000 Posts: 23379 Location: Colorado, USA
Posted: Wed Mar 19, 2008 4:50 pm
Quote:
If you do anything with databases and RoR, check out Migrations. I'm a corporate database programmer, and all I could say was "WOW!"
I just read about Migrations today, and yes, my first comment was "WOW!". This is a problem I have dealt with for a long time. I have something similar in CMUD (you'll notice a Version field in one of the tables if you look at the internals of your package and session databases). It's crucial to have a way to deal with database changes in real-world applications, and it's great to see this concept hitting web development.
Quote:
you're like a young boy who's just found a gigantic new sweet shop ;)
Well, I don't know about "young", and of course "sweets" would just give me a carb-overdose and send me into a coma. But yeah, I think the sentiment is pretty close
Quote:
I had only thought RoR was about 2 years old now
I actually just learned that the Ruby scripting language itself is about the same age as PHP. Rails is newer, but Ruby itself was being used in Japan a long time ago. I think it just took longer for Ruby to move to the western part of the world and catch on.
Quote:
As I said, I love so many things about the symfony framework to list them all.
I haven't given up on symfony yet. But from what I have seen so-far, it looks like symfony has been greatly influenced by Ruby on Rails. I don't know the history of it yet, but it certainly looks like someone took Ruby on Rails and decided to write something like it for PHP. I think that is great for the PHP community. But it makes me wonder whether using the "real thing" (RoR) might be better unless someone is completely in love with PHP syntax.
In my case, I know enough PHP to be dangerous. I'm not anywhere near a PHP "expert". It's not like Delphi. I could never stop using Delphi/Pascal because I've been using it almost *daily* for over 20 years. I've been doing PHP occasionally for about 5-6 years. So I don't have as much "emotional investment" in PHP. I can certainly imagine that for some people, they really need to stick with PHP because they know it so well. And symfony is a great framework for that.
Quote:
I used ExtJS components extensively on the last site I developed
I'll definitely look into that. I haven't used much of any Javascript components yet. I've spend the most time reading about the Yahoo YUI stuff, but I haven't really looked around and made any comparisons. Mainly I need a good "TreeView" component to handle the Knowledge Base table of contents on the left side of the page for navigation.
Quote:
I really envy that you have time to do all this research. That's something that I would love to be able to do.
[beginrant]
Actually, I feel very strongly about this. I could say stuff like "Yeah, it's nice working for yourself sometimes." But honestly, if you aren't taking the time to learn new stuff like this no matter who you work for, then you are dead. If you actually have a job as a computer programmer, web developer, etc, and your boss/company isn't providing some sort of "professional development" (classes, conferences, etc), then you should find a job with a company that cares about this. Companies that don't help their professional employees learn new technology are just in it for the short-term money and just want to use you and burn you out. Find a company that understands the need to invest time and money in your professional development.
If you work for yourself (like I do), then you always have to allocate some time and resources for this yourself. For example, I "worked" about 12 hours yesterday, because I spent the whole day reading, researching, and learning. Sure, it wasn't typing on the keyboard or programming in Delphi, but it was still "work". I was still thinking about work rather than just playing WoW or something. But if you don't take time now and then to learn new things, you just stagnate and die.
Personally, I'm a big believer of this in all aspects of life. Outside of work, I'm also always trying to learn new stuff. Whether it's how to ski, or play golf, or how to play the latest MMO. It's the comparison between someone who gets out and does stuff, vs someone who sits at home watching TV. Being active, both in body and in mind, is what keeps you "young" and healthy.
[endrant]
I haven't used much of any Javascript components yet. I've spend the most time reading about the Yahoo YUI stuff, but I haven't really looked around and made any comparisons. Mainly I need a good "TreeView" component to handle the Knowledge Base table of contents on the left side of the page for navigation.
You'll love the ExtJS examples and their online API help system then. You'd almost swear you were using a native Windows app!
Joined: 25 Sep 2000 Posts: 23379 Location: Colorado, USA
Posted: Wed Mar 19, 2008 7:52 pm
I find this very interesting. If you look at the Aptana Studio page here: http://www.aptana.com/studio/ and then look at the ExtJS page here: http://extjs.com/ you'll notice that they both seem to be using the same visual component to display their list of features near the top of the page. Is this one of the ExtJS components? If so, it looks like Aptana has chosen to use ExtJS themselves, which also says a lot about ExtJS. I definitely want to choose a component set that is popular and well documented...and something that will still exist in a couple of years. So far, ExtJS is looking *very* nice. It's the kind of stuff I was hoping to get with Delphi for PHP that I was so disappointed in.
Joined: 25 Sep 2000 Posts: 23379 Location: Colorado, USA
Posted: Thu Mar 20, 2008 2:19 am
I'm sold on the ExtJS components. *Very* nice. Yeah, the Yahoo YUI stuff was interesting too, but the quality of the ExtJS components seems higher, and I like how they try to "work well with others" by looking for existing core javascript libraries from other packages so that you don't have duplicate core scripts.
Also, they are now using the same core Javascript components as Ruby on Rails, and there is already a plugin to put ExtJS components into Rails. And it looks like Aptana is planning to release their next version with support for ExtJS within RadRails. Also, the fact that RoR easily creates the JSON data used to populate the ExtJS controls makes it a nice combo.
I've been looking at some of the demo sites, and while I wouldn't put any of these big components on the home page (too much stuff to download), using them in places like the Knowledge Base could be *very* cool.
Today I finished reading the "Rails for PHP Developers" book. It was one of the best books I've read in a while. Usually I start reading a book and then soon start just skimming. I read this one cover to cover with no skimming. Great stuff. I've installed the one-click Ruby installation for Windows on my laptop, and then downloaded and installed Rails. Had a quick and dirty test app in about 5 minutes using the included server.
Deploying RoR on the main Zuggsoft.com server (or Mymuds.com server) looks like it will take a bit more work, and I'll wait a bit on doing that until I've read more about it. Looks like RoR works side-by-side with Apache, but using the mod-ruby Apache extension isn't recommended. There is a server called "Mongrel" that runs to actually serve the RoR code, and you set up Apache to point RoR files to it. So Apache still serves the static stuff, like images, css, js, etc, but the RoR pages get redirected to the Mongrel server.
Tomorrow I'll download the Aptana Studio. I have read more about it today and looked at some of their screencasts, and it looks quite nice for both RadRails and for regular PHP (and HTML/CSS) development.
All in all, I'm pretty blown away today by the quality of all of this stuff. I might have to retract what I've said in the past about some open source projects. If Aptana works as good as the demos and documentation suggest, then I might need to buy the Pro version just to support these guys. The commercial license for ExtJS is a bit more expensive than I'd like, but it looks like you only need the commercial license if you are developing other toolkits around it. So for a site like this, I might not need the commercial license. But I'm still trying to figure that out for sure.
A lot of this stuff is what I had in mind when I first got excited about Delphi for PHP. I had know idea that there was so much better stuff out there all for free. The documentation is much better than most open source products I have seen. And there is a ton of community support for all of this.
If I am able to use all of this new stuff on MyMuds.com, then it's going to be a pretty fun site. Almost makes me wish that I did web development full time ;) Almost.
We've recently turned our boss at work onto the idea of more open source solutions. We were looking at choices for source code versioning management. Our choices were to either go with the current Microsoft product (Team Foundation Server) or do research and figure out what the best, easiest, and cheapest solution can be. We're using TortoiseSVN for version control and Trac for the neat interface that most people want. This has also let us be a little bit better with our project management as we can create milestones and tasks in Trac which we can reference and close via our SVN commits.
In the end, our money people are happy, because the software was free. Our Informaiton Security Officer is happy, because our source code is sitting somewhere other than on our laptops and is being backed up nightly with a full version trail as well as notes, tasks, and milestones (in case I get hit by a truck tomorrow). And most importantly, the developers are happy, because the system isn't all that invasive.
It looks like you have chosen RoR, but if you had been looking for a Python web mega-framework there are also some, with TurboGears (you might want to check out the section titled "Database-driven app in minutes!" on their home page) and Django getting honourable mention for the buzz they created. I haven't tried using them but they look good. Of course neither have the market penetration or hype of RoR. (Although Google Trends suggest Ruby on Rails search popularity has already been declining for nearly two years.)
Second, I know this is my first post and all, but I noticed your support for Ruby scripting in CMud, and I was delighted. So far, I've been writing a ruby application called RMuddy that KMuddy can hook into, and have basically created a meta-language to build triggering/plugin systems for muds.
And although I love KMuddy, and I love running it on OS X, I'm picking up a new .NET job soon and leaving a Ruby job. So I figured I'd check out the windows mudding scene and noticed that zMUD is apparently old news, and cMUD is the new hot :) And it supports ruby!
Anyways, long story short here: I've been working in Ruby for around 2 or so years now. For a year and a half, I was the lead developer for a Ruby project for the New York Times Syndicate (I was working for a company who had a contract with the NYT), working with three developers under me. I left because, as in your rant above, the company wanted to burn me and use me. Working 60-80 hours a week is really no fun, heh. But, about the only thing I can take away from that job now is a very, very good grasp on the ruby language, and good knowledge of a real-world use of Ruby on Rails as well as ruby-based alternatives.
So, here's the long and short of RoR:
It sucks :) And mainly, it sucks because of it's use of ActiveRecord. But there's a lot more about it that sucks pretty hard that I won't dabble in here. Basically, I started out writing the software for the NYT using Ruby and the RoR framework. About four months down the road, our stack looked like: Linux, Apache proxy balancer frontend, a cluster of five mongrels to run our RoR Sites, and MySQL.
The site was horrifically slow. We found we were having to do more and more queries by hand, essentially. On top of that, for a mildly complex, fully indexed query, we were getting HORRID results from MySQL. On top of all of this, the five mongrel servers that were being load balanced by apache were eating up hundreds of megs of RAM, and that was IDLE.
It was painful realizing that we were barely handling 2-3 users even with the load balancing. Granted, we had close to a million documents that were being indexed and searched and processed, hundreds more coming in daily... but in all reality, a Microsoft platform would giggle a little at those sort of numbers. In all reality, PHP would've handled things much more easily.
So, after looking around, we decided to switch to a different stack, but to stick with Ruby. Our stack now looked like: Linux, Swiftiply, Five Merb Mongrels running our Ruby sites, the DataMapper ORM for accessing the database, and PostgreSQL.
We gained shatloads of speed. Merb is lightweight, lightning fast, and improving all the time. DataMapper was written by my ex-boss and gaining ground and support like crazy. It's HELLA fast (you should see the performance side by side with ActiveRecord. It's mind-numbingly fast compared to it), and has a much more elegant, ruby-like syntax. PostgreSQL is WAY, WAY more of a reliable, performant database than MySQL. On top of that, it has built in full-text indexing that is easy to use, and support for a LOT of plugins.
All in all, looking back, I can tell you right now that there is absolutely no way in hell I would EVER write another site in Ruby on Rails again. I would consider ruby and Merb with DataMapper... but the truth of the matter is that for a project that the New York Times needed, it would have tanked and never happened if the project wasn't switched to Merb/DataMapper. And with both of the latter getting faster and faster all the time, Rails has a run for it's money for sure.
Now, to be absolutely realistic... Ruby and ANY ruby-based framework doesn't hold a candle to the performance that .NET will bring you. C# may feel more clunky to work with than Ruby, but it's a LOT faster. In all reality, you are going to need a really beefy server if you're going to be expecting any sort of traffic above a few at a time. On the project I worked on, we had a database server with 8 Gigs of RAM and four 2.8GHz processors, an application server with 4 Gigs of RAM and the same processors, and a storage server that was pretty low end (for the amount of media we were storing from NYT). Even still, we were really only able to handle perhaps 20-30 users a second. Also, if you're thinking about using any processing scripts or listener scripts that other scripts connect to, just forbid yourself now to _not_ use the entire RAILS stack for that one script :) Just load what you need, otherwise your RAM will fill up so quickly.
Gah, I could write a novel and a book about this very topic, and everything that is wrong with the Ruby community and with the language itself... but if everything above means nothing to you, then take away this: DON'T use Rails. Use Merb/DataMapper, and thank me later ;) Learn from my mistakes. If you already know Rails, switching is easy and a little bit of a different syntax. But really, don't use Rails, for now at least. It's just too slow.
As for editors, in OS X, I swear by TextMate.
But, about the only other editor I found that other people flocked to as zealously as I do to TextMate is NetBeans. It has some incredibly powerful features, but eats up a LOT of RAM, so if you've got a slower-end machine, I'd avoid it. But it's Free, and has great code-highlighting with some amazing searching features and powerful keyword features (if hovering over a variable name, for instance, it'll highlight all the places that variable was used). Also, it's cross-platform, so no matter what platform you're on, you can use it.
I'm personally trying to decide if I want to have RMuddy support in Windows or not, but if I do, I'm going to have to find an editor, and I'll probably swing towards NetBeans.
Anyways... Sorry for the rant/novel. There's my 2 cents ;)
You cannot post new entries in this Blog You cannot reply to entries in this Blog You cannot edit your posts in this Blog You cannot delete your posts in this Blog