Articles in the ‘Web Apps’ Category

So long LiteSpeed, hello former Soviet Union - nginx

Thursday, June 5th, 2008

Its official, we’ve defected to the Russians.

I really like litespeed, mostly because it has a simple web interface to manage your virtual hosts, environments and all their settings. I’m seriously over a shell console and typing, programmers really need to get a clue about the power of interface design and a mouse…

Anyway, we did an minor upgrade to rails 2+ and some of our apps just wouldn’t start under litespeed anymore, but the mogrels were fine, so we decided to dump litespeed and run with nginx.

Scared of the install, setup, configs and options at first, I decided to make a night of it, I bought a case of redbull and Heineken and sat down ready be confronted with lots of issues to fix and a massive learning curve to get over.

Turns out I was finished in about 15 minutes – on my development environment, and in 10 minutes more my staging and productions servers we’re also up and running on nginx – with clustered mongrels.

So I put the redbulls back in the fridge and cracked open the Heinekens ;)

Anyway, yeah, nginx is surprisingly simple to setup and use, it apparently can get complicated but I didn’t see any of that. Our local dev server was running in about 15 minutes with a 5 mongrel cluster, nginx is using next to nothing and its all running beautify, don’t know why I never used it in the first place… actually I do, because everywhere said it was a bitch to setup and use… litespeed was harder!

My verdict is to use nginx over just about anything else, I’ve used apache, litespeed, lighthttpd, and some others, nginx kicks all of them in every area.

Succeed with failure

Tuesday, April 1st, 2008

Failing is the best way to learn something in my opinion. You come out the other end with a better knowledge of the market you entered, you end up knowing the to-dos and not-to-dos, you work out how things work and interact, you should have worked out where you went wrong, people you should have spoken to and deals you should have done.

After you fail you realise every area where you went wrong, and you should sit down and really think about it all, it’ll only better equip you for when you do it again, or something similar.

Starting projects or businesses isn’t just a ‘keep trying and one will eventually work’ situation, it’s more of a learning process, you do a few, fail, learn from it all, keep doing it and failing until you’re in a position to have a good go at something, a real opportunity will present itself and when it does, you’ll have the knowledge and experience from before to make you somewhat of an expert in the area.

Maybe that’s a good idea for a site, submit your failure, write down what you did, where you went wrong and make it public so other people can learn and benefit from your disaster.

Then again, maybe that’ll be a failure too…

Personally I started my first dot com when I was 15, it failed obviously, but not long after I started another, which I sold a long time ago now, that business was profitable, and still is today. I started it when I was 16, ran it till I was 18, employed over 10 people, sold it and moved on to my next venture.

That was my first success in the internet industry, at 16 years of age before the dot com ‘boom’ and its inevitable ‘burst’ later on. Since then I’ve had other successes and many more failures. I think I average about 1 in 10, for every 1 success there’s 10 failures.

I don’t think that’s a bad number, I think it’s a result of starting something with the interest of fun and for something to do – personal interest, rather than trying to start a business to turn a profit. I rarely start a ‘business’ everything I start is a ‘project’ in my eyes, it’s something new and interesting, I’m doing it for some fun, to learn something new, and because I’m really interested in the idea I’ve come up with.

I’m an ideas kind of man, I have a million ideas, brainstorm nonstop, I plan, map, document everything, I’ve researched so many things it’s not funny, my knowledge of the internet is extensive due to the enormity of the things I’ve researched over the years, but I love it, I love doing it, I enjoy starting new projects and watching what happens to them.

I think I can honestly say I rarely care if something fails, I have so many other projects on the go, or in waiting that if one fails, there’s another to fill its gap. I don’t have a fear of something failing as long as my overall net revenue isn’t diminished in the process.

Web app of the week: RescueTime

Tuesday, March 25th, 2008

I love good web apps, and last week I found a really good app for tracking my time.

It’s not about tracking time for customers, but more about tracking my personal time, what I do during the day, how much time I spend working, playing, surfing and blogging.

I think it’s a good idea to track these kinds of things; you can really work out how much time during the day is going to waste, and set yourself goals to make improvements.

Anyway, the app is called RescueTime, you don’t have to manually log anything, it has a windows or mac background process that tracks the apps your using and when you’re using them and it sends the data to their server and you can login and check how much time you spend in the day doing certain things.

You can also tell it what apps are productive and what aren’t, so for me, business based apps that I use I mark as productive, and games I play I mark as not productive, and you get stats on how productive your week is compared to previous weeks and you also get breakdowns on where your spending your time, playing games, working or blogging etc.

It’s great for people like me who have a tendency to not want to work at times and get sidetracked easily on new things, it makes me accountable to me, I can check WTF I was doing and think to myself, okay, stop it, get into doing work.

I think that’s a big thing when you work for yourself, you’re not really accountable to anyone but yourself and a tool like this really helps drive that point, you can look at it and say, as an employee of my own business, my time spent during the day was good or bad, and reward or discipline yourself depending on what you’ve done.

You can also set yourself goals, like I want to spend 6hrs+ a day on work tasks, or spend 1hr a day or less on playing games or blogging, and you can track those goals. It’s always good to set yourself goals, you need to reward yourself and feel good about what you do.

On top of that I have employees, so I’m now tracking their time using the app too, I don’t have to watch them so close, I can monitor them online to what they are spending their day doing!

Application development team for $40 a week! Believe me?

Wednesday, March 19th, 2008

Have an idea for a web application? Want to invest in a real online venture? Something custom built to actually take on players in the market?

To build something substantial realistically costs thousands every month in development fees.

Let’s break down a professional development team, such as ours.

To develop a business application to the high standards that we have to for our clients, we have the following staff in house:

A Systems Architect, Project Manager, Programmers, Designers and an accounts person to manage the billing.

Of course they all aren’t fulltime on 1 project.

I’ll break down the % of time spent on an average 4 month project by each team member.

1 Systems Architect: 20%
1 Project Manager: 20%
1 Programmer: 100%
1 Designer: 50%
1 Account person: 10%

Our apps are all web based apps, hosted either internally or externally (intranet / internet), so there’s a high level of input from a designer who handles the interface design and xhtml etc.

This should be typical for any midsized development house. Let’s take US rates for staff and break down what a project would cost, and also look at the % per project.

Systems Architect: $100k – 20% = $20k a year, about $7k in wages for 1, 4 month project
Project Manager: $80K – 20% = $16k a year, about $5k in wages for 1, 4 month project
Programmer: $60k – 100% = $100k a year, about $20k in wages for 1, 4 month project
Designer: $50k – 50% = $25k a year, about $8k in wages for 1, 4 month project
Accounts: $45k – 10% = $4.5k a year, about $1.5k in wages for 1, 4 month project

So in total, in wages alone, for 1, 4 month project the cost for a company to develop an application is at least $40,000!

Plus, if this company is a contracted company, than they need to add profit and cover other costs, looking about $100k plus.

If you were to shop the project around and found a lone ranger, a 1 man show that can do it all, to cover his own wages for 4 months is still around $20k, and you would realistically expect less development done in that time since their time will be spent on other things, management, architecture, design, client updates, billing etc. I’d expect 3 days of a 6 day week of actual programming.

So how can I possibly justify my topic of a whole development team for $40 a week? Where is this crazy and bullshit deal?

Well there isn’t one. Not yet. Not that I know of anyway.

I can however divulge that I’m considering it…

I’m a systems architect and project manager for our current projects. We also have another project manager on staff, a designer, some ruby on rails programmers and some other general staff for accounts, and support.

There’s a bunch of projects that I want to build and I’m willing to open my team of developers to outsiders in exchange for their expertise, industry contacts and their own network of resources.

On top of that a requirement would be to share the development costs.

I can afford to reduce development costs to as low at $40 per week, on the proviso that there are 10 people investing in the application development.

So my thinking is that I’d invest in at least 3 shares minimum, and put the other 7 shares up for anyone to buy into at that $40 per week.

Why?

Well, I can afford to develop my own projects, and we do. But that’s what we do, we develop applications, we don’t necessarily have all the greatest industry contacts, networks of websites with thousands of users every day or things like that.

We can build businesses but we don’t have the time to market them, I’ve done marketing before professionally and I understand the resource requirement and time that’s really needed to make a web business work, and that’s not time well spent for a team like ours.

So I’m willing to open my team up to outsiders to own a portion of a business and in exchange for our super low development costs / super cheap investment, I’d only be accepting people who can offer what we don’t have, that marketing and promotion side of things.

Honestly the money for development isn’t an issue, but it covers my team costs and re-assures me that the people involved are dedicated to the cause; they have a financially invested interest in what’s going on, I would want to be partnering with people who have the resources and traffic to promote whatever it is we build successfully.

At the end of the day it’s about making the development successful, I wouldn’t be profiting from the development, so it’s in my best interest to partner with worthwhile people so me, just like you can profit from the business itself.

As for what we would be building, well I’m undecided. I have a lot of ideas, but who says it has to be one of my ideas? If someone comes along and has a good idea and is keen for what I’m proposing, then we might run with that and see if we can round up some other people to invest in it.

Anyway, just been a thought of mine, thought I’d blog about it.

Client work pays the bills and more, but I’m not into doing client work forever, we’re building our own apps and I’m defiantly interested in expanding that scope.

I’d be interested to hear some feedback on what people think about it all.

Pointless social networking applications are popping up everywhere

Tuesday, March 18th, 2008

Seems like everyone is jumping on the social networking bandwagon, from aggregators and add-ons to whole social networks, it’s starting to get saturated.

The big thing with saturation is that there’s nothing new coming out of it all, there are just smaller versions of all the same stuff.

Here’s a short list of pointless social networks

http://www.sazze.com/ social networking with product reviews… pointless mashup.
http://www.veridoo.com/ Multilingual social networking with some branding added…
http://www.fubar.com/ Social networking… in a bar? Get drunk, make friends? It’s getting popular, amongst people with nothing to do
http://www.tweet140.com/ Something stupid to do with 140 twitter characters
http://www.linksladies.com/ Female golfing social network
http://www.wallstreetchic.com/ Social network for business women
http://www.itog.com/ Social networking built on opinion
http://thebiz.variety.com/ Hollywood social networking

I could go on for hours; there are thousands of them now, all more pointless than the other.

For me I figured MySpace was ugly and pointless, never used it, was more for 14 year olds, I do like Facebook, it has some purpose and is useful for keeping in touch with people I know.

We’re all having the same problem with rails hosting

Sunday, March 16th, 2008

I think the biggest problem with ruby apps is the hosting.

PHP is so easy to host, you can upload it almost everywhere since mod_php is usually deployed by default with apache and php is deployed with every server now days.

Problem with Ruby is that it *can* be memory hungry and there’s ‘installing’ to do on the server side to get it up and running.

On top of that, web hosts either don’t support it, don’t support it well, or charge a lot to support it.

You can pick up an average ruby hosting plan with a plesk or cpanel control panel etc etc, but it’s going to be slow, not only because you’re on a virtual hosts - shared environment but because it’s not setup right, not load balanced and what not.

Just because it says FastCGI doesn’t mean its fast, Lighttpd isn’t all that light, and using a VPS and still using a control panel like plesk to handle your rails isn’t going to solve any issues.

This is where I think Slicehost is *almost* the perfect host for rails projects.

You can easily setup a couple of different slices (virtual servers) in a few minutes, and install SQL on one, and litespeed on the other.

Only downside is that there’s a lot of manual work to get it all 100%, not only on the server side, but on the client side.

Setting up your Capistrano, and other local tasks take time.

If Slicehost dedicated a side of their business to rails deployments, providing Capistrano recipes, deploying servers with litespeed and rails etc pre-installed, you know, like 5-6 different deployment configurations to choose from to get up and running, that should cover the most of what people are after.

Right now most non linux technical people are stuck either learning how to do all these things in linux which is time consuming, and frustrating at times, or people are stuck paying large sums for overrated hosting.

Mediatemple charge like $20 for 64mb of memory, mosso charge $25 for 128mb of memory and engine yard are off the scale with $990 per month + $690 setup… Not to mention engine yard’s $125 per month for 1gb of backup space!

‘Grid’ hosting, load balancing and what not isn’t all that hard to do, and it’s not terribly expensive, I think engine yard are overcharging a bit, but that’s my opinion.

If I ever got into hosting, I’d do the same as slice host but dedicated to ‘LAMP’ deployments on virtual servers, setup a grid over at cari.net and use 3tera to manage the virtual servers.

4 servers for a rails application?

Saturday, March 15th, 2008

Well 3 + a local dedicated development server.

For some people it may be overkill, but I see it as good planning and future proofing.

I run more than 1 rails application too, actually deploying upwards of 20 total over the next 2 months, so I need a dedicated area to store repositories (SVN), and it’s defiantly good practice to separate out the sql server from the rails server.

And as far as cost goes, it’s not much. Slicehost offer slices from as low as $20. So if you’re only getting started you’re looking at $40 for 2 virtual servers, each dedicated and saleable up when you need it.

I know a lot of people like to run rails apps in a shared environment, but if you do you’re stuck compromising on the speed of your app, stuck using low performance webservers like apache or lightty.

It’s well worth the money to run a couple of slicehost servers, and they are all yours, run as many apps on them as you want.

A few ruby on rails deployments starting this week

Friday, March 14th, 2008

I’m deploying a few new rails projects this week. The biggest issue I have with rails projects is the work that goes into setting up local SVN, Capistrano, an SVN server, application server, web server and a database server.

On top of all that you need to setup Capistrano to deploy to them all, and run some testing etc.

Overall it’s a 2-3 day process. But with the help of litespeed, it’s come down; litespeed has cut a good 6hrs out of it all in my opinion. Realistically it takes a lot of time to do it right, and to test it.

Not to mention the long term advantage of running litespeed, - load balancing, scaling and memory management.

Sure if you really wanted to you can get up and running in under an hour.

But to produce a solid development, staging and production environment with the right setup and infrastructure to last more than a month, it takes time.

I think I’ve put together a nice process to handle it all, I’m going to spend the next few days going through the whole process again from scratch, and I’ll be documenting it, so I’ll probably post it.

The setup I use server wise is:

  • 1x Local development server (Ubuntu 7)
  • 1x hosting account for SVN (I use a media temple grid service account)
  • 1x 512mb slice from slice host (dedicated virtual server, saleable up or down at anytime) for the rails application(s)
  • 1x 256mb slice from slice host (again, dedicated virtual server saleable at any time) for mysql and phpmyadmin.

The slice server virtual servers are also Ubuntu 7.

And as far as software goes, I’m using the normal subversion, ruby 1.8, and what not.

My main difference, and the main difference with everyone when it comes to ruby apps is webservers, I’m using litespeed.

I’m amazed why more people don’t use it.

Go and read about it. I’ll post more about it later. It really kicks the crap out of apache, and nginx.

It runs php 50% faster than apache. And it runs ruby on rails super fast too, and with less memory used. Far less.

WebSites and WebApps – build or buy?

Wednesday, March 5th, 2008

This is a question that doesn’t get asked – or thought about enough when it comes to buying websites and webapps.

There are lots of them for sale every day – sites and apps that are under 6 months old, minimal amount of money spent on advertising, but since the site is making upwards of $500 a month, the sale price is at least $5k or more.

I’ve rarely seen a site or app for sale for under $5k that’s – in my opinion; a ‘good investment’.

There’s no reason why you can’t take your $5k, build something similar, or better, and have change left over to do marketing, at least that way you’re taking away the risk that the seller is lying and you going to throw your cash away.

And not to mention you can have it built the way you want. That’s how I prefer things, mostly because I like things done my way, and I like things built a certain way.

The last 5 sites I’ve bought we’ve totally re-done from scratch because the code that was powering the site was average at best, and the design wasn’t all that fantastic.

Honestly, there’s not much you can’t have built that sells for under that $5k mark for around $3k or less. Shop around; look at places like odesk and elance for developers and designers.

Building web applications from a business owners perspective: the reasons why we use Ruby

Friday, February 29th, 2008

That’s something we do here, (my business), we build web apps.

A fair while ago now I had to make a decision which way to go for web app development, language wise.

I ended up choosing ruby.

Why?

Well not only does ruby have a really cool framework, Rails, but the language is very easy to use and learn.

The main reasons that swayed me to build a team of ruby developers over php and asp

  • No more SQL… Yeah, no more having to write sql. For a programmer that’s a shocking statement. But I’m not a programmer. I’m a business man, and as a business man I need apps built quick, I need fast development cycles and cutting out the whole sql side of things defiantly does that.
  • Ajax is built in. To do lots of fancy and cool java (ajax) things, you typically have to code it all yourself, which means as a business person I need a java programmer on staff too, but ruby has ajax helpers that do the majority of the java code for you. Again a time saver.
  • Rails environments. Rails can run in different environments, so development, test and production. This also means there are 3 different databases, it’s a big thing to explain, but it’s fantastic.
  • Version control. This leads from that last point almost, and sets up the next, we use SVN and Capistrano to manage versions and deployments, a new version gets deployed and then migrated.
  • Migrations. New additions to the database and system can be deployed and migrated to the test environment on the server (beta pretty much) for testing, if it looks all good, you can then do a production migration, so migrate all the updates to the production environment with a few lines in your shell on the server. Saves taking down a site, manually migrating databases etc etc etc. This does it all for you.
  • Reverse Migrations, again, I can’t mention it enough, if you push something into production and there is an issue, you can roll back to your previous version with 1 line in your command shell. This rolls back everything – files, new columns in databases, everything… You can then fix the issue in the test or development environment, and then deploy the new version. Super cool, all with no downtime.
  • MVC framework, models, views and controllers are fantastic, that’s a framework advantage and most developments use frameworks now days, php and asp, but rails is still very nice and I think does a great job of it. Easy for any developer to jump in and start working without having to read comments or a manual, or having to search through random code and files.
  • Easy to learn, I’ve found it one of the easiest languages to learn, which is great when brining on new staff, if you take on php or asp coders you need to be prepared to take a risk on how good they actually are, theirs skills overall might be alright but their actual coding ability could be average. With ruby, it takes lots of the coding out of the coders hands, an example is sql, you don’t have to worry that your php programmer is really bad at sql or not, or he might know sql backwards but be average with php. At least with ruby you know the developer is skilling up more and more on ruby and other languages or systems.
  • Gems are very nice, gems are like plug and play add-ons for your apps, you can install a gem with 1 line of text in your shell and right away you can start using its functionality. A gem can be big or small, it’s a whole application in itself, your app basically interacts and uses a gem like an API, but it’s all wrapped in together and deployed with your app.

Anyway, there’s lots of things you can compare and push back and forth about why one is better than the other, personally ruby on rails makes more business sense to me, it’s a rapid application development language and framework, it’s an actual object orientated language not a scripting language like php, we can build, fix and maintain fast, and still deliver a quality product, which is all that counts in my opinion.

Programmers will always want more control and flexibility with their language, they want power etc, ruby takes lots of it away from them so they assume its inferior and not worth changing from their super powerful asp or php, in reality that matters in certain conditions, when you need to really write an app well to achieve maximum performance etc, or to do extremely complex things.

However we’re not doing extremely complex things, and as far as power goes – servers are cheap, and we use grid layer servers, so scalability and performance isn’t an issue. For us rapid development and easy manageability is key.