Posted by Ian Holsman
Thu, 17 Aug 2006 06:45:00 GMT
So.. After doing my screencast covering how easy it was to get a django site up and running on webfaction I thought it would be only fair to show people how easy it was to get a rails app (typo) up and running on webfaction as well
Thanks to Remi for letting me do this.
Posted in Development | Tags django, rails, screencast, typo | no comments | no trackbacks
Posted by Ian Holsman
Fri, 14 Jul 2006 21:10:59 GMT
Some folks benchmarked Symfony, Ruby on Rails and Django.
Check it out here:
Performance Benchmarks
I dont particularly care which framework (django or rails) is fastest, I don’t think it’s going to change a person’s mind on which to use.
I also think both are good enough to get the job done and other factors like your app design will limit you way before your framework will.
but Django’s choice to go in process and use modpython looks to have paid off in this case.
but what did surprise me was how poorly PHP and lightty performed.
<shameless plug>Perfmon </shameless plug> can help you find your django bottlenecks
Posted in Development | Tags django, rails | 1 comment | no trackbacks
Posted by Ian Holsman
Mon, 22 May 2006 16:31:00 GMT
I’ve upgraded my blog to use mongrel instead of fastcgi.
pretty painless.. just needed to write a startup script to make it come up on reboot, and change the apache config to
proxypass / http://127.0.0.1:3000
proxypassrevese / http://127.0.0.1:3000
no messing ton’s of rewrite lines, or configuring stuff.
Posted in Development | Tags fastcgi, mongrel, rails, typo | 1 comment | no trackbacks
Posted by Ian Holsman
Wed, 29 Mar 2006 19:08:00 GMT
My hosting provider has upgraded to Rails 1.1 without any warning and
it looks like all of the hosted Typo installs are down :(
and
XXXX upgraded today already. No warning, broke my app.
while it’s great to have the latest and greatest version.. the Rails people NEED to have a way to let people run two different versions of rails on a shared-hosting server, as it seems that they have a large group of people who use it that way.
with django I do this easily by having the framework/egg in my home dir.
I’m just wondering why the ruby folk can’t do the same thing.
Posted in Development | Tags django, rails | 5 comments | no trackbacks
Posted by Ian Holsman
Tue, 20 Dec 2005 21:53:00 GMT
On The relevance blog
today, Stuart mentions how his company underbids his competitors by 30-50% for projects. and how rails lets him do this.
Personally I’m not so sure I would be doing this. (disclaimer: I haven’t placed a bid for anything for a long time).
why not?
price = quality for a lot of people, and by being so far out of whack of your competition it signals to the potential buyer that you are going to do a shoddy job. your sales guy now has to convince them of your quality, and of the quality of rails itself. Until you have educated your potential buyer that rails CAN actually deliver quality at such a low price point, I would be going for a price more inline with everyone else.
cost != value. just because it costs you half to build something doesn’t mean you should be charging half for it.
you are driving the market price down and starting a price war. For this contract you might get the deal, but in the long term you will force the java guys to go hungry, and they will in turn be forced to lower their prices to compete, and probably switch to rails/django as well. so.. all you have done is given your self a year of ‘ok’ profits, and then you will be subject to intense competition at the lower price point. The only winner there is your buyer. not you or the java guy.
If I were the marketing person in your company (or the person who ends up figuring out the price) I would be bidding at 5% under the java version (give him a bit of help, and estimate how much the java version would cost), and not even mentioning what language you will deliver it in.
If asked, mention rails or django then, with a focus on the quality aspects of it and how it enables you to write bug-free code (NOT the efficency ones).
and then donate the extra 25% margin you just got to some charity or to fund open source development.
or keep it in your own pocket :-)
Posted in Business Related | Tags django, marketing, rails | no comments | no trackbacks
Posted by Ian Holsman
Sun, 11 Dec 2005 22:56:00 GMT
Following on from Jeremy’s Web 2.0 companies need to scale article, I’d like to explore another avenue of that question.
How do the modern frameworks help you, the developer scale your application seamlessly?
In my experience there are 2 major ways scalability is adressed. Caching, and distribution of the data. I’m not calling myself an expert in any of the frameworks above, but from what I can see all of them handle caching pretty damn well. so I’ll like to focus on database scalability a bit here.
First when I talk ‘scalability’, what I really mean by this is having the response return in a consisentent (low variablity) time for the given request. The aim of scalability is to have this variability not increase as the number of users increase.
I have seen the following approaches to handling large (and larger) amounts of data. They are:
buy a larger machine for the DB server, all too often the beefiest box is the DB server, and if it goes down so does everything ;( for the frameworks in question, handling this type of strategy is a no brainer.. you provide a pool of connection handles and add some tuneables to the number of connections on the pool. easy stuff for the framework and the developer, as there is nothing for them to do ;-) but it starts to fall down when you have large amounts of data and large amounts of connections, rendering the caching strategy of the DB inadequete (and response times becoming highly volatile)
federate another ‘do nothing’ for the framework and the developer. simply have one logical database which is served by multiple machines. I’m guessing that this would be the easiest ‘step’ for people to move to from the ‘large’ machine approach. I haven’t looked too much into the internals of the MySQL implementation, but hopefully it does some of the query caching on the remote machine and it will make for more consistent results. This is a good solution if your application has lots of loosely related data (lots of little applications) and the query joins can be done remotely.. and can tide you over for a period longer as you can use 3-4 machines instead of a single one.
Replication this is a godsend for many write few read many situations. basically you write to a ‘master’ and then you connect to one of the slaves for selects.. If response times are getting sluggish/too variable you can stick another slave into the mix. The frameworks I’ve seen don’t seem to handle this at all. Most of the time you can only specify a single connection. so either you need to split your application into 2, with the ‘write’ parts in one, and the ‘read’ in another or handle this stuff yourself.. YUK. what a large waste of effort and source of errors.
clustering by key-value this can be seen in sequoia/C-JDBC this technology emulates a ‘large’ machine but allows the admin to split tables onto multiple machines, as well as providing federation (and cross DB type) functionality. while this seems to be a ‘java only’ thing, they provide a ‘C’ library, so it could be used in other languages if someone had the energy to port it.
using a search engine as a DB source nutch’s NDFS and Map Reduce functionality. and lucene provide excellent alternatives to RDBMS, and could be used as a fast replacement in some cases.. but too often they are overlooked.. and again frameworks ignore them ;(
To me this is one of the limiting factors of the frameworks out there, and while some of this stuff can be done on top of the DB api they provide, it really should be integrated into it, allowing people to concentrate on the value-add instead of the infrastructure bits.
At the very least they should support replicated DB engines out of the box.
They would need to have some kind of config where you can specify a write connection (DB/machine/port/user/password) and a read pool (db/list-of-machines/user/password) for which a connection pool could be created. and have the framework decide which one to use based on the operation.
Posted in Development | Tags django, rails, scalability, symfony, turbogears | 2 comments | no trackbacks
Posted by Ian Holsman
Fri, 25 Nov 2005 14:54:00 GMT

I’ve heard stories that doing rails and django development can cause your productivity to increase by up to 3 times, and that they result in better quality code.
But what does this actually mean?
Well for the company hiring the developer, it means they get a product cheaper and faster. yep.. thats good.
But what does it mean for the developer writing the code?
What does he get out of it? usually a pat on the back, and another project to work on, and if he is lucky a small bonus at the end of the year.
Have developers been able to successfully negotiate with their bosses to get a share of that extra productivity or is that all going to the bottom line and the owners pockets?
Now.. If a salesman for the same company became 3x more productive you KNOW he would be knocking on his bosses door and renegotiating his deal to take into account his productivity increase, and if he didn’t get it would be out the door and in another job the next day.
Why isn’t it the same with developers? why isn’t there some kind of incentive scheme for them tied to their productivity, and also the end result. Sales and profits.
Most developers would approach this issue in the following way:
eg… assuming I get $50/hour.
If a product took 300 hours to code, I can do it now in 100.
I have just saved the company 200 hours..
That’s $10,000 just in my wages, and I should try and get more of that.
This isn’t right for a corporate developer. You (the developer) are a fixed cost. They have to pay you regardless. You need to approach it by thinking about 1 month of extra lead time where the company can be generating sales/revenue on that work is worth.
Remember when negotiating, don’t just think of your cost savings, think of that lead time as well.
When the project you are doing got intially proposed there should have been a ROI or some kind of benefit calculated.. you need to figure out how much that month is worth based on the ROI.
trust me .. your senior management is, they know what getting this done a month early means to their bottom line.
This kind of thinking isn’t new. This is how the construction industry works. They have LARGE bonuses if you can get the building up and usable before the estimated completion date.
BUT remember there are also penalties if you are late.
I think developers and IT projects should be rewarded the same way. I think people with ‘skin in the game’ perform better… and it will force the real ROI/benefit to be calculated more accuratly in the first place (ie.. less crappy projects that are just fluff)
Has anyone seen this kind of thing happen in their workplaces?
Posted in Business Related | Tags django, negotiations, productivity, rails | 7 comments | no trackbacks
Posted by Ian Holsman
Thu, 10 Nov 2005 17:41:00 GMT
from The Farm
Here are the tag lines of 3 frameworks
Rails: Sustainable Productivity …
Django: … for perfectionists with deadlines
Symfony: … for lazy folks
I think the tag lines speak a whole lot about the general ideals about the framework.
what do you think?
Posted in Development | Tags django, funny, marketing, rails, symfony | 7 comments | no trackbacks
Posted by Ian Holsman
Sat, 01 Oct 2005 19:53:00 GMT
I got bit by this twice on two seperate machines which didn’t have ruby installed on them.
If you get an error like this:
$ rails
…/lib/ruby/gems/1.8/gems/activesupport-1.1.1/lib/active_support/clean_logger.rb:13:in `remove_const’: constant Logger::Format not defined (NameError)
The problem isn’t you…
ruby 1.8.3 changed some of the internals which activesupport relied on, the patch is in here –>
ticket 2245
Posted in Development | Tags rails, ruby | no comments | no trackbacks
Posted by Ian Holsman
Thu, 29 Sep 2005 01:54:00 GMT
Sam over at the magpie brain asks the question about what is keeping me (or anyone) from using rails.
here are three:
- Learning Curve: I’m productive in X, while it might not be as fast as if i was productive in Rails/django, that productivity will only happen after a couple of months of coding with it
- Inertia: I have 4-5 other products currently using X. In order to use Rails/django I will need to rewrite those in Rails/django. Thats a big hit, and not one I can justify easily to my PHB.
- Busy: I don’t have enough time to learn rails/django as I’m too busy fighting the fires caused by not using Rails/django.
What I am doing to try and ‘push’ me into this is deploying and running ‘rails’ applications at home and introducing self contained applications like Weed at work as a small workable proofs of concepts which I can demonstrate to my PHB how good they are, and slowly build my experience up so that when i start a new project i can hit the ground running.
Oh and what can you (the rails development community) do to make my life easier?
write documentation about your application on how to install the silly thing. A simple do this, then do that..
come up with a ‘common’ method of installing it and creating the databases. I have seen 2/3 different ways with typo, weed, rforums, tracks, and Muraveyweb. all seem to do it in slightly different ways.
make it easier to install on Apache2.. the rewrite hoo hah is daunting.
(rails) figure out a neat way of letting me running multiple rails app in one URL space like django does.
Posted in Development | Tags django, rails | no comments | no trackbacks