It took me a while to work this out, but I think it comes down to having 3 toolsets available in your armoury. Some of these tools can be used to do everything, in fact, with the 3 systems I’m recommending you can do everything. You shouldn’t try to force one system to perform beyond it’s capabilities the end users experience will not be nice. For the past 3 years, I’ve been trying hard to have one system that I can call on to build everything in and it never works. Each project is unique and has subtle requirements that often only come out through truly understanding the customers needs and end goals.
It’s a real shame when developers try to shoehorn a project into their favourite system. Sure it makes it easy for them, but the end user doesn’t get the full benefits of a dedicated architecture and design. A classic case would be a resistance to use any open source CMS on a project but to build a totally custom system each and every time.
So in quick summary you should be familiar with the following 3 technologies.
- Wordpress - so many sites out there, good for blogs
- CMS - Wordpress is not a CMS, try something like MODX or Silverstripe
- Web App framework - something to make powerful web apps that don’t rely on content.
Wordpress developers are some of the biggest culprits for forcing an inappropriate technology choice on customers, because theres a plugin for that, right? Wrong. Wordpress is a fantastic blogging engine and seems to have some great SEO features, configured in the right way it can perform very well. However, it isn’t a Content Management System, and it definitely doesn’t support advanced features well.
As a freelance developer, I’ve found plenty of work fixing Wordpress sites that are crawling slowly, building simple templates and general maintenance work. Credit where credit is due, the Wordpress community is making some great headway and serious improvements in performance and capabilities, but it will always remain a blogging engine.
Speed optimisation, correct plugin development and theme development are the basic areas that need to be focused on. The sheer number of Wordpress sites that are out there and the poor quality of some of the work make this a profitable skill-set.
There is a subtle distinction between a blog and a CMS and quite honestly I have no idea where to draw the line. My rule of thumb is longterm content that is more complex than simply a news item. Most CMSs do have blogging capabilities, but this shouldn’t be the main focus of the site. Product, service or technical information is an ideal candidate for a CMS. I’ve built sites with on MODX that need calendars of events, cinema listings and really tight integration into newsletter software like Mailchimp. I’d go as far as to say most businesses need a CMS driven site rather then a blog driven site especially if their content changes very rarely.
CMSs can typically handle larger numbers of static pages in a much more elegant and user friendly way; a personal favourite MODX runs sites that handle millions of pages and daily page-views. What is also important is the ability of the end user to easily produce large amounts of sometimes complex content without an intimate knowledge of HTML or the CMS. The CMS needs to become a helpful and useful tool that reduces someones stress and workload, rather then adding to it. Increasing the amount of work or complexity will result in a poorly performing website. Having a customer thank you for reducing their workload, or making their life easier, is one way to make a job stand out as a success.
This is the most rarely used tool personally, if I’m building an application then they tend to be native clients rather than web apps that said having an understanding and knowledge of the tools available is very useful. Web apps not being driven by content require a completely different approach to construction you start moving in to a world where MVC and ORM becomes important. Choosing a web application framework has filled entire websites and at least one civil war.
I’m a fan of PHP it has many flaws and isn’t perfect, but it is promiscuous. PHP is everywhere from incredibly cheap hosting packages to running Facebook. PHP is mature you know what you are getting, and there is very good documentation and community support, which goes a long way to making a tool usable. All the other tools I’ve talked about today are PHP based, to make my life easy so are the frameworks that I choose. I don’t need to setup special hosting packages, I already have a testing environment configured and ready to go. I’m tending towards using Yii for the web apps that I build. Simplistically it’s an imitation of Rails (as in Ruby on Rails) but for PHP. It prioritises convention over configuration and used a strong MVC approach. It’s also fast and mature with a good community, so ideal for what I need. By using convention over configuration, it means you can get a very basic implementation up and running very quickly for a customer.
If you want to focus on purely web app development then you probably want to go and make another choice, node.js and or Ruby on Rails are all good solid solutions that are credible contenders.
The fourth of three things you need to know, at some point if you’re going to start writing code in exchange for money ecommerce will rear it’s ugly head. Choosing a correct of suitable ecommerce package is a whole other world of problems. Sales channels, competition, payment methods, type and number of products, source of stock, shipping, pricing strategy and stock turnover all come into play when choosing a platform.
Meanwhile, you can get a long way on getting experience of the common payment APIs, really in the UK there are 2 Sage and Paypal. Both platforms come with example PHP libraries that you can use to play in the sandbox.
Obviously being successful in freelancing takes more than just choosing the right platform. Having a ranch of technologies to call on though won’t hinder you at all.
I don’t think there is quite the perfect feed reader available. I’m
currently using Shaun Inmans Fever
which is a great product with some amazing features for finding trending
With the current furore about the new changes to Google Reader I
spent some time thinking about the feed reader I would build in an ideal
- HTML5 Local storage for offline use
- Decent mobile navigation
- Silent Socialising (a la Instapaper)
- Like This - Try This Feature
- Unbias This Article
- Feed to SMS
- Integrates well with Instapaper and Pinboard
- An API that is documented and supported
HTML5 Local Storage + Mobile Client
This is a pretty obvious one, the site needs to work on my iPod Touch
and desktop. It also needs to work when I’m offline so I can read on
highly lossy connections like public WiFi or train rides. Some of this
is negated by the Instapaper integration, but not everyone has an
Instapaper account do they?
The ability to mark items as public, and to provide the option to
subscribe to other peoples public feeds. I would use this to replace the
linked items on this site with a public feed of RSS items. There is also
a separate option to favourite an item. Not always are favourite items
public and vice versa. Google Reader, Instapaper, Pinboard have all
proved the quiet social networks work on the web, you can’t build a
platform out of them, but you can enhance your product.
Like This? - Try This
Using some one of the many types of content classification it should
be possible to classify either feeds or individual articles. Interesting
and similar content that isn’t in the current set of RSS feeds can be
presented to users.
Unbias This Article
If articles are classified into some type of topic grouping, it
should be possible to apply sentiment analysis to article groupings. If
you’re reading a news article and would like a different opinion you get
presented with a selection of articles that have an opposing sentiment
on the same topic.
Feed to SMS
As soon as a feed item is detected email or better SMS me the link.
Great for anyone that needs instant notification of job postings,
breaking news etc.
Google reader has no official API. Shocking to consider that so many
desktop and mobile feed readers rely on Google reader as their cloud
sync agent. My dream feed reader obviously would provide a beautiful,
well documented API for independent developers to use.
There isn’t anything here that is particularly ground breaking or
advancing the field of RSS reading. It is simply a set of technologies
that I feel could provide a great experience.
Classification of articles is not perfect, but there are ways and
means of getting some fairly decent results from computers. It would be
a great way for people to find interesting and relevant articles to read
without having to subscribe to yet more feeds. In my small amount of
non-scientific RSS reader behaviour studies the people who are serious
about reading feeds and staying up-to date are willing to invest in that
ability. They are the pro RSS users that need heavy weight tools to
manage and control the flood of really simple syndication.
In a back of an envelope calculation I think a working prototype
could be cobbled together in 2 weeks and take a lifetime to perfect.
Shameless self promotion here, but hey! I took that 2 weeks, made it 8 months and still going. But check out the perfect RSS reader (in progress).