@madpilot rants

Need a frontend coder?

While I work on some personal summer projects, I’m looking at getting some front end contract work – you know HTML/CSS/JS sort of stuff.If you know anyone looking to turn pictures into websites, get them in contact with me.Hourly rate negotiable depending on contract length.

220s: A marketing odyssey

For those of you that have been keeping abreast of the goings on of my work life will know that I helped start up a cooperative workspace in Leederville just over a year ago. The idea behind cooperative spaces is pretty simple: You get a bunch of freelancers together to share rent, ADSL and other running costs, which can be prohibitive if you are on your own. A lovely side-effect of throwing a bunch of like-minded people into a couple of rooms together is that you can share work, talk about problems you might have and avoid that oh-so-familiar cabin-fever that is common to people that work from home on their own for long periods of time.

When twotwenty started, we had dreams of doing big jobs together and sharing work, and generally acting like a company – except with the personality of freelancing. While there has been some sharing, lots of talking and there hasn’t really been a single cohesive push marketing or branding wise. So over the past few weeks we have been busy planning, writing, designing, photographing and coding up some marketing material to see if it is possible to do cooperative marketing. At this stage we are focusing on the local Leederville area (of course, we are more than happy to talk to people in other areas), so we came up with the “your local web guys” campaign, starting with the launch of our shiny new website: http://www.twotwenty.com.au. Designed by Pascal, the brief was to present something targeted to the local Leederville area, that spoke about the individuals at twotwenty. We wanted to be approachable and personal, hence the sometimes risky headshots. The only way we had even a chance of pulling them off was with professional photography (Seriously kids, don’t try them at home).

So, if you are in Leederville, drop in and say hi, and we can go for coffee. Oh, and you can follow us on twitter.

Soooo… Which one is better? Online or offline marketing?

Both Alex and I are web nerds. Throw us a technical problem and will be champing at the bit to solve it. This, like many other coders who start their own business, is what we spend all day doing. Unfortunately for us, being totally awesome at what we do is only a small part of running a successful business. Alex’s business, Brown Beagle Software has just taken on it’s first employee, and I’m ready to start selling the living daylights out of my CMS so we need to move beyond adhoc, word-of-mouth “marketing” and get a bit more serious. Of course, neither of us know a great deal about that…

Alex and I are both residents of the collaborative work space twotwenty and over coffee we were discussing some joint marketing stuff that would help the whole group get some work, and the topic of mail drops and social networking came up — and we noticed a pattern: I was speaking in terms of offline networking, whilst Alex kept going back to

online networking. Being the contrary type that I am, I laid down the challenge: We should see which type of sales and marketing works best: offline or online!

Rules

The rules of our little game are pretty simple:

  1. Alex can use any marketing method he chooses, but it must occur

    online.This would include Twitter, Facebook, Google Adwords, SEO. He can’t count leads from people that originated in real life.

  2. Myles can’t use the inter-tron with his quest: He can only use traditional channels, such as face-to-face, networking meetups, traditional media and offline advertising
  3. A lead is counted as a genuine enquiry for work. For the sake of this experiment, we can sell any of our services, but we need to be able to do the work. A completion is counted when a job is accepted.
  4. Once a prospect has been engaged, communication can continue into the other medium (e.g. Myles can use email, Alex can use a phone).
  5. Myles and Alex can spend up to $250 each on their campaigns.
  6. Both need to track how much time they have spent on marketing.
  7. At the end of the month, whoever has the best ratio of leads vs. time spent marketing will be deemed the twotwenty marketeer of the month™, and will gain kudos until the end of time (or until April).

Head over to http://www.offlinevsonline.com to watch the craziness unfurl.

Yep, Software Engineering is dead

You know that feeling you get when something you’ve been taught to believe in gets discredited and because your belief was tenuous at best, the walls come tumbling down around you and then you have a huge weight lifted off you shoulders?

Pascal just posted this on the 220 mailing list. Amen. It’s something that I’m pretty sure I’ve been articulating for a long time. Whenever someone has asked me why software is hard, I always use this analogy:

If you ask a Civil Engineer to build you a bridge, it is easy to spec out. You know how far the bridge has to span, what sort of foundations you need, and as a result you can make a recommendation about what sort of bridge you need. The Engineer can build you a little model – you can look at the model and say “Yes! That is a bridge. That will do nicely”. They can mathematically model the bridge to make sure this doesn’t happen. They build the bridge and if it allows things to cross from one bank to the other, you have a success.

Unless you are building “Hello World”, a Software Engineer’s life isn’t so simple. You have different platforms, users, stakeholders, contexts – it gets exponentially harder with every feature that gets added. I once did a unit at Uni called Formal Methods which tried to mathematically model software. It was stupid. The code we modelled was like, nine lines long, and required a 32 page proof (I didn’t even get close). Stupid.

Of course, academics have been trying to shoehorn software into engineering for ever. In first year, they taught us UML which I guess is similar to architectural drawings or flow diagrams or something. I’m sure UML works really well when working with the waterfall model of software design, which has strong ties to old school, proper engineering. I couldn’t imagine having to go and update hundreds of UML documents every time a minor change was required. We are also taught in first year, that the waterfall model is pants in the real world, which by association makes UML nothing more than a nice thought experiment. (I’m still bemused by the number of Software firms that put it as a requirement for graduate Software Engineers – basically because coming up with job descriptions for inexperienced programmers is really hard).

Sure you can argue that testing is a software technique that we (should) use, but this is the exception to the rule. I guess the conclusion we need to come to is that Software isn’t an engineering problem – it’s a people problem. (Some may say, it’s a creative problem – that’s also true, but buy me a beer and I’ll explain that traditional engineering is too, so the argument doesn’t further my point). This in itself is a problem, as (gross generalisation ahead) boffins who like coding, tend not to deal with real people very well.

Further discussion on our internal list suggested that creating software products is the way to go. I think I want to agree with this – there are many examples of off-the-shelf products that are extremely popular: Microsoft Office, Adobe Photoshop etc. In these situations, the customer works with in the workflow of the software, and that seems to work. So do we as developers need to convince our clients that the feature they want may not be needed? Do our clients actually know what they need? Of course this view is not with out it’s flaws either – users will generally be working against the software, rather than with it. Is working with a sub-optimal solution better than battling with requirements and budget overruns?

I can’t help to think that there is something we are missing. It would seem there is a disconnect between what our clients want and what we can provide. If you look at the classic project triangle, your client wants to minimise price and time, and maximise good (I hope my English teacher isn’t reading this), where as we want to maximise all three. So the crucial “pick two” part flies out the window. Either we start sacrificing the good, re-negotiate the price, or try to stretch out the project to restore the balance – none of which makes for happy clients.

Well how about adding fat to the quote? In theory, this is fine – if a client sees value in an “inflated” (but more likey a realistic) price then everyone is happy right? Well, not really – software development is much like homework assignments: You start out with plenty of time, and the best intentions, and then end up pulling an all-nighter to get it finished – and you still only get a C at best. I suspect this is because it’s impossible to lock down requirements of an abstract problem. This isn’t only because of the difficulty in describing what we don’t understand, but because we don’t even know what half of the problems are going to be.

And this is our quandry – how can we estimate unknowns? Not just “we haven’t seen this before but it looks like X” unknowns, but “What the hell? How is that even possible?!” unknowns. Other areas of Engineering encounter these problems occasionally – we get them all the time. So, the solution (he says as if there is one) is to minimise the risks and/or consequences of these unknowns. Jobs that deal with people do this all the time. If you work in marketing, you can postulate all you like – you can’t be sure how a campaign will work until it does. Marketing is reactive.

When you make a change you can’t be sure what will happen. Sure, you can put an ad in the Yellow Pages year after year, because it has brought in on average Y leads per year – but there is no guarantee this year will be the same. It seems that the humanity-based sciences are happy with this, but quantitative-loving geeks don’t like that. Hell, binary is black and white, not Gray.

So, perhaps the key is to treat software as a living breathing thing. Agile programming and iterative development can help, but they are means to an end – they don’t work with out communication and understanding between people. We need to break down the barriers between provider and client – the question is: Is that even possible?

The first SchwaCMS goes live!

After the last announcement of MadPilot’s new CMS, I’m proud to follow it up with the announcement of the first site to use Schwa as it’s backend: Greenvale Mining NL.

Greenvale was designed by the ever-so-talented Adrianne from bird.STUDIOS, and was sliced by the latest edition to the twotwenty family: Niaal Holder from Speak.

We have a number of sites being launched over the next couple of week so watch this space!

Dear clients…

Please watch:

Ideas 5: The accessibilty edition

The Australian Web Industry Association, together with Web Industry Professionals Association, present Ideas 5. This year’s Ideas is is focussing on Understanding WCAG 2.0 & Preparing Websites with Improved Accessibility. If you are a web developer, and you aren’t thinking about accessibility then you REALLY need to get your butt down to the Melbourne Hotel in Perth on 22 of April 2009. Tickets are only $40 for AWIA members ($55 if you aren’t. In unrelated news, AWIA memberships are pretty cheap)

The two talks will be given by Roger Hudson and About Andrew, both experts in their fields, so seriously, it’s a great opportunity to hear from people that know what they are talking about.

Go to the website and get more info. Go on. Seriously.

SchwaCMS goes live

For the past couple of months, I’ve been locked in my room, hacking away at a (probably not-so) top secret project – which I have just pulled the big switch on. So ladies and gentleman, let me introduce you to SchwaCMS. It’s a hosted CMS product that has taken ideas from many years of toiling away on other peoples’ CMSs.

There is a complete feature list on the website, but some of the geek highlights:

  • Upload progress bar
  • Proper use of HTTP status codes (including 410 – Gone)
  • Full UTF-8 support (Check it out — the ? isn’t a HTML entity, it’s a real schwa)
  • Weight based keyword extraction from content
  • Full-text search, including a Did you mean? function
  • Integrated spell checking
  • Just-in-time scaling and caching of images
  • HTML is automatically cleaned on save
  • The ability to export the menu as an ordered list for inclusion in third-party apps, such as blogs or forums
  • A demo that is tied to the browser session, as as soon as the user logs out, their demo site gets blown away

I’m pretty excited about this release. It’s built on a custom PHP framework, and is hosted on my very own hosting box – it almost feels like MadPilot is a real web company now! (It’s only taken 8 years :P)

Go check it out: http://www.schwacms.com

Now do I make a bad pun about Christmas or summer BBQs…

You know what, I’ll save you the pain.

The reason I’m being tempted by such high-brow literary devices, is the AWIA Web Mixed Grill – 24 short web articles from now up until Christmas – a web advent calendar if you will. Today saw Miles Burke givng hints and tips about being a successful freelancer, and tomorrow I’m blabbering on about HTTP request codes or something, and I hear from a small avian creature that there is a number of other hawt-sauce articles coming up, so it’s well worth the RSS subscription.

Of course, if you think that you have what is takes to impart some knowledge on the web world at large, then there is still a few spots left, so email mixedgrill@webindustry.asn.au and pony up some grey matter.

The need for speed

If you are a DBA, and your reading this – look away now, because I’m pretty sure they covered this in Database Optimisation 101 and you WILL laugh at me having this revelation. 88 Miles hasn’t been the snappiest web application around lately thanks mainly to an influx of users (NOT that I’m complaining :P). I’d successfully added some views to speed up some of the reporting recently, and I went through today and optimised a lot of code, but it still wasn’t as quick as I would have liked it (A page load in the main index page was taking on average 1.5 seconds – down from the 4 seconds pre-optimisations).

I was googling the performance differences between INNER and LEFT joins (INNER wins most of the time for those of you playing at home), and came across a word that I vaguley remembered between dozing off in my Database class at university – indexes. Now, don’t get me wrong, I KNEW these things existed, I even knew what they did, but because I don’t use them regularly, I didn’t even think to look at them. As all of the primary IDswere already primary keys, my gaze turned to the foreign keys (I use the term relatively loosely – they were foreign keys in the sense that they referred to another table ID, not because they had been explicity setup that way).

I added indexes to the foreign keys on the three main tables, and voila! A ~10x speed increase on that front page! It’s such a simple optimisation too! *Slaps head*

Next