HenceDigital

3 Things You Need to Be a Web Developer

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

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.

CMS

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.

Application Framework

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.

eCommerce

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.

Nginx Settings for SecondCrack

SecondCrack is a nice piece of blogging software that I use for this site. Marco Arment has all the settings set up for Apache. I’m using Nginx with php-fpm because I wanted to be difficult and annoying. The .htaccess rewrite rule stumped me for a bit last night, so here they are.

    
    server{
    
            listen 80;
            server_name     www.hencedigital.com *.hencedigital.com;
            root            /home/whereever/something;
            
            #This turns out to be important when serving static files
            default_type text/html;
            if (!-e $request_filename) {
                rewrite ^(.*)$ $1.html last;
            }
    }

My Perfect RSS Reader

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 topics. However…

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 situation…

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?

Silent Socialising

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.

An API

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.

Update

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).