Programming

Logo designs - are crowdsourced sites better than boutique designers?

Last month I began designing my latest project - a web application that is targeted at the guitar world - specifically at teachers who post guitar lessons via video.

Normally when I design a site, I will either create the graphics myself, or go to one of the many pre-made graphic resource sites around the web such as graphicriver.net or creativemarket.com.  But THIS time, I decided that I wanted something custom made, so I would try out fiverr.com to see how that panned out.

Expectation were not high - after all, the site says that each job will cost only $5.  I soon discovered that this was not strictly true, as the initial price of each job is $5, but there are all sorts of additions (some non optional, such as high res copies of the logo etc.) that add on the to the costs.

In the end, the job was going to cost me $10, so I entered my brief, including a description of the site, and sent the job off to one contractor on that site who specialised in logo design.

A few days later, I got a reply from him with a suggested logo.  It was a nice logo BUT... All he had done was to google my site name, grab the first image result on there and flip it right to left.

I was amazed at his audacity, and emailed him back immediately to inform him that I thought this was a rather lazy effort, even for $10.  He emailed back his apologies, and told me he would rework the logo.  True to his word, he got back to me a few days later with another logo.  This time I did a quick Google Image Search but it didn't come up with a match online, so it appears that he DID design this one from scratch.

End of the day, I think it still looks a little amateurish so I probably won't use it and will probably approach another site to help me design one.

By now, most professional graphic designers reading this will be having an apoplectic fit.  "This is EXACTLY what is wrong with using crowd sourced design sites!", you will shout.  Along with "Well, you get what you pay for - pay peanuts, get monkeys!".  And you would be right.

Sort of.

As a 'boutique' software designer myself, I can relate.  I hate those sites that promise coders who can code up an entire web site for $100, when my normal quote for a similar job is $2000.  I have had clients reject my quote so they can go down that path.

When I started my business back in the mid 1990's, I needed a logo for my company, so I approached several local design firms to come up with an idea.  My experience was actually quite wonderful.  All of them took time to talk to me and get an idea of what my business was about, and all of them prepared some beautiful presentations and concepts for me to look over.

One designer in particular, was very effervescent in his enthusiasm, and went to the trouble of printing out mock business cards with my name on it and some glorified title that I cannot remember now, but he was trying hard to 'paint the whole picture' for me.  We didn't go with his firm, but instead chose another one that was more conservative.  I remember this guy as being the only one to call me back after I sent him a "Thanks, but no thanks" letter.  He got quite agitated that I didn't go with his design, but I explained that I thought it was great, but a little over the top.  It didn't seem to sooth his feathers.

I just put it down to him being a little too personally attached to the results of his work, and just left it at that.  Heck, I am the same with MY work most of the time.

But a couple of months later, I was driving down the industrial district of our town, and I noticed that a new dry cleaning business had opened up with a brightly painted warehouse.  The huge sign out the front screamed their company name and motto, and... the EXACT same logo that was designed 'just for me' by the abovementioned designer.

I just laughed it off and carried on.  After all, it makes perfect sense to recycle your hard work and not waste your creative energy each time you pitch to a new client.  I just wondered if he told these new clients that this logo was design 'specifically for them based on the dynamic nature of their business', like he told me.  Actually, I wonder if even *I* was the first one he designed that logo for?  I could have been just one of a long line of business he had brought that one out for.

Fast forward to a few months after that, and I saw the same designer one the front page of our local newspaper, and not in a good way.  You see, around the same time we were getting our logo design done with him, he was designing a new logo for our local electricity company.  They had spent millions on their rebranding and associated collateral, and then.... they discovered that their logo was the exact same rip off of a European Union association.  Not even slightly altered, but a direct copy.

I reflected on this.  Sure, recycling your design work is perfectly acceptable, but plagiarising work from other is definitely overstepping the mark.  

So nowadays, when professional designers call out the cheap design sweat shops online, I have to stop and wonder about the fact that the two seem to have more similarities among them, than major differences.

After all, does the amateur designer hunched over a laptop in a small flat in Karachi care LESS about her work than the experienced guy working in a 10th floor award winning design firm in London?

I would think that the drive to create something new and wonderful is the same in everyone, across the board.  However, the ethics involved in the process of creation seems to be rather more flexible than I would have thought, regardless of the respective hourly rate.

Lets stop the abstraction!

There is an old saying - "Give a programmer 5 hours to write a particular program, and they will spend 4 hours writing another program that can write the original program in one hour!".

Increasingly these days, it is hitting me just how true that old adage is.  I have been cutting code for over 30 years now, and more than ever I am of the opinion that the world of programming is just drowning in a sea of constantly evolving tools.

It is no longer enough to just pick a language and become proficient in that, and just plain write code using that language.  Nowadays, it is a constant dance of selecting frameworks, database layers, deployment layers, and even additional languages that simplify the writing of the base language of your choice!

We all know that at the core, all computers just function on a series of 1's and 0's - the turning on and off of electrical impulses.  The closest we can get to that is to write in assembler code - manipulating the registers and directly accessing blocks of memory in the hardware.  But that, as we know, is fraught with danger.

So we rely on higher level languages, which are then compiled or interpreted down to machine language so we can run our apps using code that is easier for us to understand as humans.  For years, we simply picked a high level language, then let the compiler or interpreter get on with converting that language into machine language.

But lets look at an ubiquitous language of today - Javascript.  Now Javascript in itself is a fairly simple language, bearing close resemblance to C and other languages, so that programmers can usually pick up the nuances and write decent code in short order.  It is also an interpreted language, usually being converted into machine instructions at run time within a browser.  Not the most efficient language, but still serviceable and functional.

But somewhere along the line, someone decided that Javascript was still a little too hard, so they invented a simplified version called CoffeeScript.  Lets paint the picture here - we now have a specialised language which is then converted into another language which is then interpreted within an environment written in another language which then converts everything into machine language.

But it didn't just stop there.  CoffeeScript itself became bastardised over time, and now exists in about a dozen different flavours.  As of writing this post, there are around 40 different languages that 'compile' down to Javascript.  This is not counting the hundreds or so other extensions that generate javascript code based on a whole other language.

It is no longer enough to say that you know CoffeeScript.  You have to now define the flavour of CoffeeScript that you are familiar with.  You have to remember a whole new syntax to compensate for the fact that you could not remember another syntax in the first place.

I just can't wait to see the next iteration of languages that compile down to CoffeeScript, which then compiles down to Javascript, which then compiles down to.....  You get the picture.

I am theorising here that there is a glut of excess programmers out there who are not actively engaged in solving real world problems, so they take out their energy and time by writing yet another interpreter/compiler for a perfectly valid working language.

To put it in a more primal context, the village is thirsty, but rather than locating water or digging a well, the villagers are busy improving each other's shovels.  We will all be dehydrated soon, but man will we have some great shovels...

 

 

 

Cloud Overload

About 5 years ago, my PC desktop screen was starting to look a lot like the image here on the left.  Cluttered with a myriad of windows, it was getting so that I couldn't even bring a background window to the foreground because (a) I couldn't identify it any longer and (b) no matter where I clicked on a background window, it was a 'hot spot' that caused something to happen when I didn't want it to.  I just wanted to bring the window to the front but ended up executing a macro or changing the view etc because modern applications have pretty much < 1% of the active window that is not a clickable area for executing something !

So in 2012, we successfully converted ALL of our usual desktop apps over to cloud, or web based services.  This was wonderful.  It gave me bragging rights at parties and a feeling of smug accomplishment.

But just today, I realised that I have created a monster in another form.  You see, I just realised that my normal working day now requires me to open up at least 25 tabs on my browser.  Just to get my day to day work done.  For some specialist tasks, I am looking at around 40 browser windows.

This is NOT counting the other tabs I will need to open up for research or fact finding.

I am beginning to loath it when Chrome crashes, and when I click 'Restore Tabs', I have to wait about 10 minutes whilst it reloads content in 50+ tabs.

I used to get upset when the number of tabs negated the titles of the web sites, so I began to rely on the little favicons to identify which tabs did what.  Now even the favicons are being obscured by a veritable tsunami of grey tabs, and it is common for me to accidentally hit the 'x' close button instead of the actual tab when switching with a mouse.  Alas I lack the pin point mouse accuracy of an SAS sniper.

I need to consider shutting down some of our web based services.  Either that, or get a browser that is more command driven.  I have been intrigued by the Vivaldi browser project, started by the guys who made Opera, but that is still in early days.

How ironic.  Though I am developing apps for modern web and touch based devices, I seem to be craving my tools be command driven, just like when I started on DOS based terminals back in 1985...

 

 

 

On Code Comments

Actual source code from Microsoft Word 1.0 for DOS

Actual source code from Microsoft Word 1.0 for DOS

This post is basically a bookmark for me to come back to and remind (berate?) myself regularly about my comments that I write in my code.

Not that I should do more. I actually put in a heck of a lot of comments in my code, because I know my memory is poor.  Especially so when I have done several late night programming sessions in a row.  I once even completely forgot that I had written an entire application after a month of sleep deprivation.

What prompted this post is the fact that I often find myself coming across lines or blocks of code that are commented out.  Without explanation.

Just today, I had to go back into some 2 year old code, because a client had reported a possible bug that wasn't bringing pricing across properly from their legacy system.

It took me a while to re-understand my code, and that was helped by the copious comments I had left, knowing my own mental fallibility.  However, when I finally got to the section of code that did the pricing import and looked at it, I immediately knew what I needed to do in order to effect a fix.  BUT then... I noticed that there was already two lines of code EXACTLY like the ones I was about to put in.  Only they had been commented out by me previously.

Why?? What made me comment out those two lines in the first place?  Did they introduce yet ANOTHER serious bug in the system?  There was no notation as to when the lines were commented out, nor any indication of WHY I had done so.

The 'when' is an easy fix.  I just need to go back through my version control system to work that out, but the 'why' is an altogether more puzzling conundrum.

I'll be sure to leave some comments in this section of code reiterating my journey to write, then comment out, then uncomment the alleged lines.  Perhaps in another year or so, I will come back to it and have to unravel this veritable Gordian knot of commentary.