You have two eyes and one mouth – use them in proportion

You have two eyes and one mouth – use them in proportion.
Why is this so important?
It’s so important, at least in my mind, because it can be successfully applied to almost every aspect of our lives. If you run a business, listening to your customers is paramount. If you are in government, listening to people increases understanding before apply new policies. If you are a client-servicing business, listening to your client and understanding their concerns and problems before providing advice is critical.
I am by no means suggesting that you merely listen and then take no action – indeed the quote when my grandfather says it to me – by no means directs this. Rather, it suggests that you should do more listening before you talk.
Don’t interrupt. Don’t put someone on hold. Don’t interject. Don’t talk over the top of them. Listen to people – then talk.
I am actively trying to achieve this daily.
Are you?
No commentsLaw Clerkships – The Naked Truth
I thought I would put together a little section on Clerkships – my experiences and my general thoughts. I also have put together an Example Cover Letter which might assist you if you have never done a cover letter before. I am, by no means, suggesting that this is perfect – but it might help you out in your applications for Clerkships. I also intend on doing a similar type of scenario for CV’s and I hope to get that up here at some point as well.
The following is simply my thoughts on Clerkships and Law generally. You may agree – or disagree – with these general thoughts and feel free to open a discussion thread on the All Things Law in this regard.
Clerkships – The Naked Truth
Law Firm clerkships are an inherent part of becoming a lawyer and they are also perhaps the most stressful.
Clerkships are typically viewed as a nightmare – they are ultra competitive, there are only so many firms, and there are only so many positions on offer. Most of the larger firms typically receive more than 1,000 applications for seasonal clerkships and usually have only 60-75 seasonal positions on the table. This means to even start, your chances are narrowed to around a 6% or 7.5% of even getting a seasonal place. This is then reduced even further for the now so called ‘Professional Legal Trainee’ program where the pool of 60-75 seasonal graduates is reduced to 30 who actually receive graduate offers.
The outcome? A 3% chance of getting a graduate place from the moment you click that ‘Submit’ button when you are applying at firms in comparison to your peers. Picture this as you stare around the lecture theater, only 3 out of every 100 people around you will end up working at a big firm. This is, of course, based on the assumption that you want to go to a big firm. There are positives and negatives to the entire process and in my experience it’s critical that you allow yourself the best opportunity to work in a big firm and in a smaller or mid-tiered firm.
Back when I first started the JD, I sat down with a very senior legal friend who was General Council at one of the largest financial organizations in Australia. His key advice in a nutshell was essentially that …
No commentsGmail Security Ideas – A Multi-Stage Sign Up
Something that really shocks me – is the ease at which Google Gmail accounts are being targeted by scammers and hackers. It’s a concerning trend and something really needs to be done about it from Google’s – and all free email providers - ends in order to better protect email account holders. Most email attacks originate from hackers infiltrating one users email account and utilizing the data within that account to consequently infiltrate other accounts. For all Google’s might – it flaws me they don’t implement, what would be seemingly easy to add security measures for Gmail accounts so that consumers are generally made ’smarter’. This is part of the inherent problem – consumers, by their nature, are patternistic and use the same password for multiple accounts – which make them easy targets for hackers.
So what are some ways to solve this problem?
The primary issue with Gmail accounts – & in fact all free email accounts – is directly correlated to the sign up process. Companies like Google, Yahoo and Microsoft are torn between getting a user quickly through the sign up process and using their products – against ensuring that accounts are made secure. Most are seemingly opting for the former and ultimately disregarding the latter. Email signup needs to be rethought and refocused by incorporating a mult-stage signup process rather than a single stage one.
For example, the process I have added below would be extremely beneficial to all Gmail users and would allow Google to easily require users to update their security information to ensure that accounts are not hacked.

More importantly, the information that Google requires to be compulsory needs to change with the modern age. When a email account is hacked, the scammers are quick to change all information within the account to stop you gaining access back to the account – this is part of the fundamental flaw of the sign up process and indeed the entire security process. Let’s look at some measures in which this could so easily change.
1. Require Mobile Phone Number – Everyone has a mobile phone in this day and age – and if you don’t have one, then chances are you aren’t on email anyway. The simplest methodology would be for Google to force you to add your mobile phone number as an added layer of security and automatically SMS you password changes. Most email users rarely change their passwords unless they are forced – so the degree to which SMS’s would be flying in from Google would be low. The mobile security feature could then be activated for password resets, core account modifications and so forth.
2. Match Country to Mobile Prefix - This is another big one that Google currently doesn’t do. Google has a huge record, and consequently a pattern, of the most common places you access your email via IP. I would go so far to say that they know even the physical location through reverse geocoding. In light of this information, why doesn’t Google force a Country Mapping to mobile numbers ? That is, you can’t change your mobile phone country unless you specifically enter a unique SMS code – which, of course, is SMS’d to your current phone and then ultimately a confirmation sent to the new phone. Why is this important? Because as soon as a hacker gets into an account, they change the mobile number. Most hackers aren’t in your own country – so this makes it impossible for them to attempt to change your mobile number to another outside of your country.
3. Backup Address Termination or Confirmation – The whole “Security Question” is so flawed in email systems that if I had my way – I would just terminate it. The world of social media and privacy disclosure now means that everyone posts everything online. And if they don’t – they post it on Facebook and befriend everyone who requests an invite. So what you say ? Well, 90% of the time, the answer to your security question lies in the data that you have posted around the Internet or on facebook. The “Security Question” just shouldn’t exist – there is really no need for it in our modern world – so lets just terminate it.
Of course, if Google aren’t willing to do that – then they should require confirmation of the secondary or “back up” email account. Do they do this at the moment? No, and it’s clearly a fatal error as the first thing hackers do is change the backup email so if the account owner attempts to reset the password – the reset confirmation is getting shot back to newly changed email. This should be linked back to your Mobile – so if changes occur you receive an SMS notification with confirmation code OR require confirmation from the old email address and the newly changed one.
4. Confirmation for Contact Deletion – This is another common trick for scammers – hack your account, copy your contact list then delete them all. Google could again implement SMS notification or secondary email confirmation which requires if >X contacts are deleted in any one session – or in any one amount – you are required to confirm such an action. Most people rarely purge huge number of contacts in any one session and if they did do their “spring cleaning” – then a simple confirmation confirms that they are trying to change their contacts list in large numbers.
5. Data Security Plugin – This one is my personal favorite idea – Google need to implement a lab plugin which allows your to customize account lockouts relevant to data changes or combinations. How would this work? Simple. You could setup Rules – or Google could do this automatically for you – similar to those filtering rules you have for your Email inbox as new mail arrives. i.e. if {forward email added AND 10 emails are sent in 10 minutes AND password attempt change} = lockAccount, send SMS with Unlock Combination. This would be such a cool plugin which would seriously beef up account security because it would be difficult for scammers to ascertain what account customizations would trigger a lockout. In some respects, this could be called the “Last-Line-of-Defense” plugin – since any number of combinations could be setup to really stop scammers or hackers who have infiltrated your account.
The reality is – while some of the above suggestions may be going too far [although the Data Security Plugin would be insanely cool] – the mobile and secondary email confirmations is really just something Google should enforce in a multi-step process. Sure, users want to sign up and start using their account – but just give them 30 days to complete Step 2 before it’s forced onto them. 99% of users will complete it within the first week anyway if they really want to use their email account as its for their own protection anyway.
Such simple additions would make email hacking incredibly more difficult for scammers and create an ultimately safer environment for consumers. Google do a pretty good job as it is and Gmail is an awesome product – but this would make it, well, “awesomer”.
No commentsIntroducing All Things Law Forum
I get a lot of people coming to this site and asking me questions about my Law Notes, Papers and a range of law questions in general. To assist with this process and to allow other people to provide their view on a particular subject, clerkship and a raft of other similar questions – I have created a new forum on this site – aptly named All Things Law. The exact address of the forum is through a subdomain on this site – http://law.timdavis.com.au. The premise behind this forum is quite simple – ask a question and hopefully many other students and even senior lawyers from around Australia can add their commentary. More importantly, the responses and the discussion are publicly available for everyone else who is looking for answers to particular questions or for people who are just stuck on a particular concept and need assistance.
The more people that we can get onto the site, the simpler and easier it will be for people to post questions and receive answers. The whole point of originally releasing my Law Notes on this site was to assist people with their study and understanding of the law, and ensure that they aren’t freaking out when exam time roles around. In upholding this concept, I am now trying to extend this in a way which allows any person to post a question and hopefully receive an answer. In this light, I am also looking for some forum Admins to assist me and to generally promote the site through their Universities and the like. You’ll note that it’s free to join and is a simplistic forum which allows for anyone to post questions and answers.
If you are keen to get involved, just drop me a note with some information about yourself and I’ll get you onto the Administration List for the All Things Law Forum. No doubt, this would also look handy on the CV that you are an administrator of what will hopefully become – with a bit of help – a well utilized resource ;)
No commentsDesign by Ease, Not by Clicks – An Amazon.com Design Review
There is no doubt online that all metrics are measured by clicks. What you click, where you click, how you click, why you click, the time between clicks and even your mouse movements prior to a click. Of course, the question is whether all this information is ultimately helpful in respect to design and user interaction. If a user takes 5 clicks to reach a conversion and ultimately an income generating event, is this better than a user who takes 3 clicks to achieve a similar outcome ? The answer, in my mind, may very well be yes.
“Yes, you say? What are you crazy of course it’s not better – lower clicks are always better?” Yes, prima facie this is the exact answer that most people provide – but the reality is that just because a user has taken more clicks does not mean that it’s a better conversion. The missing variable in the equation is the difficulty in relation to the clicks or rather, the ease. A user who makes 5 easy clicks and generates income is a much better metric than a user who takes 3 clicks but is totally confused with the process. This could be ultimately measured as a function of time – but even this may be a misleading variable because some users like to pause and read and analyse before clicking. Of course, 3 easy clicks is much better than 5 easy clicks as the later just means a user is having to do more work and the site is poorly designed or set out.
Let’s take an example of a big eCommerce site like Amazon to see how it fares in both respects – ease of use and clicks.

When you first hit the Amazon home page, your eye is naturally attracted to the top right hand corner. There is no doubt – as previous studies have concluded – that a persons eyes focus on the top-left corner of the page, the headlines, and then scans the page in an “S” or “F” like pattern depending on the format. Relevantly, Amazon users are able to quickly choose the appropriate category of items on the left hand menu, or alternatively, they can select from the dropdown Category Selector – set by default to “All Departments” – and enter a keyword into the search box.
As an aside – something that Amazon could improve upon from the outset – which you may or may not have noticed – is automatically focusing the cursor in the search box when the page first loads. Why should they do this ? Simple, because it would require the user to not have to separately click on the search box. That is, the user could load the page and just start typing – a very simple change that would save the user time. Such a change is an ease of use change – sure, as a facet of this improvement it reduces clicks – but it enables a user to save time and enables them to complete one less process on Amazon.
“It’s such a tiny change, whats the point?” Well, let’s assume that a consumer visits Amazon 1000 times a year to search for items and spend 0.06 sec on clicking on the search box every time – thats around a minute a year lost in clicking on the search box. It’s nothing right ? Well, considering approximately more than 600 million people visit amazon a year – thats a lot of people but ultimately includes repeat visitors. For the sake of this post, let’s assume 30 million visit 1000 times each – that means its around 30 million minutes of people’s time lost a year just from not having the search box automatically focused on load. That is a big deal and is something that Amazon should really be taking note of.

To continue, let’s now select the category “Clothing, Shoes & Jewelry” and click on “Clothing & Accessories” – this is our first real click – and a very simple process to undertake. There is a question here of whether Amazon should provide another sub-level of menus so that we are able to “Shop by Department” [see below] directly from the main page. Of course, such a change may impede width on smaller browser resolutions – that is you can’t see the next level properly – and reduce the user experience. Amazon may also have rejected this extra level as by “forcing” a user to get to this page, they are presenting them featured brands and special offers under the broader “Clothing & Accessories” category.

If Amazon had instead introduced this third level menu from the main page, this would mean that most users would miss Amazon’s “Special Offers” and would may reduce the users experience – and a possible income generating event. This is a great example of why click optimization was not favored over ease of use for the user in an informational presentation context. As an aside again – you’ll note, that the mouse is not focused in the search box when we have arrived at this second level page – costing the user another click if they want to search.
The left hand side of this page features a number of categories that the user can select to go to the fourth level of the main hierarchical category of “Clothing, Shoes & Jewelry”. It also attempts to generate some cross-sell or cross-promotion through the “Related Categories” selector – which would take the user into another categorization of products. Relevantly, if a user hovers over the “Men’s” category – they are presented with another sub-category menu which allows the user to dive deeper again within the category of “Clothing & Accessories”.
This new menu provides a much deeper sub-selection towards “Men’s Clothing” and clicking on the broader category of “Men’s” – that is, not clicking any particular sub category on the menu below – is our second click. This now presents us with yet another broad based page with special offers and featured brands – most probably ranked by popularity. This new page presents us with even more options down the left hand side with clothing specifically related to Men such as “T-Shirts” and “Shirts & Polos“.

I am struggling to understand why Amazon hasn’t introduced such menu options along their “Horizontal” Menu featured at the top. You’ll notice that if you move your mouse over the “Horizontal Menu” that you won’t see any additional hover menu like the one above. This is particularly annoying when you click on a sub-category such as “Shirts and Polos” and you want to get back to the main “Men’s” menu. Instead, you must click on the “Men’s” menu – as seen below – which takes you back to the previous page. If Amazon introduced the above Menu on their Horizontal menu for sub-category pages, it would vastly improve the usability of the site and allow users to skip directly to the categories above without having to go back to the main “Men’s” menu. This is actually an example of time optimization in addition to reducing the number of clicks and ultimately making the site easier to use. There is absolutely no reason – I see at least – why Amazon could not introduce the above hover menu to their Horizontal menu on sub-category pages.

Now that we are finally at the “Shirts & Polos” page – we get to see products. The vertical menu down the left hand side is now quite long and shows “Department, Fabric, Shipping, Brand, Special Sizes, Customer Reviews, Prices, Seller and “New Arrivals”. In my mind, this is an over utilization of the left hand menu which makes the left hand side of the page now too long. On small browsers, most of this information isn’t even visible when the page first loads and the requires the user to scroll. Some of this information would be better presented horizontally across the top menu – in addition to on the vertical menu – such as critical information like Price and Fabric. This would allow users who are quickly searching to filter by price when they are at the top of the page, and then also have the option of filtering as they scroll down the page.

One thing that actually really irks me is the lack of color selection. Sure, Amazon provide a neat little color selector – for individual items – but I want a global color selector for all items. For example, why can’t I search across all “Blue Shirts & Polos” directly from this page ? It seems that Amazon doesn’t have any image recognition software to determination the range of colors within individual product images that are contained across its website. Such technology would really greatly assist a consumer in filtering through products to easily get what they are looking for. Another missing aspects of this page are the reviews for each product or even brand. Why doesn’t Amazon allow us to see the reviews of the “Armani Exchange Shoulder Logo Crew” displayed on this page to determine whether other users have suggested that this is a fantastic product. Providing such information from the outset would vastly improve conversion rates on products that users are looking for without have to click backward and forth on individual items.
To finish this, already quite long post, once you select an individual product on Amazon you are presented with a large scale product image and “Customers who Viewed this Item also Viewed” to show other users pattern history and attempt to drive relevant cross-sell. This is a great concept and one which would see many users click and purchase other items which are similar to the individual product they selected. From a design perspective, a lot of the information on this page could be presented in “Tabs” – rather than as a long individual page. For example, the “Products Features, Product Description, Product Details” could all appear as individual tabs at the top of the page near the product image – rather than requiring the user to scroll down the page to see this information. Even reviews could be added so that it would make the whole thing easier to quickly access this information.
In conclusion, many of the aspects of Amazon are great and many are not so great. Relevantly, Amazon requires a user to click on multiple items to finally arrive at their end product. While many of these clicks could ultimately be improved – Amazon simply aren’t doing this for (I assume) the simple fact that it works. Users can select items “pretty” quickly, they are used to the format of the site and don’t mind clicking through different hierarchal structures to finally purchase products. While this post has perhaps been a little critical more on the design side of things, it does highlight that despite these design flaws – Amazon works. The design works, the site is ultimately easy to use and millions of people purchase – and purchase big.
In this light, hopefully I have shown (albeit ultimately digressed a little) that the ease of the site has won over click optimization. Sure, by optimizing clicks it may be even easier to use – but why change something that ultimately works and people love. My only big piece of advice for Amazon – fix the focus on the search box, it’s simple and seriously is something that would improve the user experience.
Oh and also feel free to fix all the other things I mentioned as well!! :)
No commentsLaunch Countdown, Being Stealth and CrowdSend
So we are in the final stages of producing our product – CrowdSend. It has been a long, complex and often stressful journey to get to the point we are currently at and it is equally frustrating when the journey involves some ’stealthness’ in relation to what we are doing. Vivek Wadhwa wrote an interesting post about startup companies remaining stealth – or not disclosing what they are doing – and his comments provide an interesting perspective. Of course, each companies circumstances are different and what is best for one is not necessarily best for another. CrowdSend is something that we – Fluc Media – have been working on for around 12-14 months now and is quite a complex piece of software which has been built with the help of BizSpark – a great initiative from Microsoft that we are extremely proud to have been a part of for when it first started back in 2008.
While it’s true we are essentially stealth, in that no one even knows what we are doing, we have tried to remain iterative throughout the entire process and engaged a small subset of users who have provided us with valuable feedback as to what works and what doesn’t. This is essentially what Vivek puts forward as the key problem of remaining stealth – software solutions are built for consumers, and without consumers to provide you with feedback in relation to what you are doing, then you are building ‘blind’ in one way or another. What you think consumers need, may not be what consumers actually need, want or would like to interact with. Of course, as the software product becomes more inherently complex – the ability to simply ‘launch at first iteration’ is not always possible if the product simply doesn’t work – there is nothing to interact with or the product is so buggy that its just too frustrating. Website users typically form their first impressions of your website and your product within as little as 1/20th of a second and this means that if it doesn’t simply “work” then you just lost a user, a revenue stream or at worst – a negative blog post or press article.
Of course, this is also relative – if your website has sufficient ‘buzz’ then users will ‘want to explore’ the site and be willing to ’spend time’ to engage in your product. This is a key aspect. I would argue that the Facebook is not an inherently simple piece of software to join, learn and understand as it takes a considerable time to setup and establish your presence – just ask your mother or father if they are able to get onto the site and use it without asking you for at least help and understanding. Users are willing to engage in - and spend time on – Facebook because it has sufficient ‘buzz’ and because most people now use it. Of course, this may be attributable to the fact that in the early days young students were willing to spend time with the product in order to communicate with their friends and it served a purpose, drew sufficient buzz and is now equivalent to the 6th largest country on the planet at 350 million users. If the site launched and was only targeted at the elderly, I am not convinced that the same level of engagement would have been achieved because age is highly correlated with frustration as a function of time.
Importantly, we have not remained ’stealth’ because we are ’scared’ that competitors may steal our idea – we have filed intellectual property for that and while we don’t rely on it absolutely, it’s still a barrier that may deter some. Instead, we have remained stealth primarily because we have reiterated the product so many times relevant to the feedback we have received from our current users. Being stealth is, in my mind, highly correlated to the geophysical barriers. You may be stealth online – but not stealth to a community of people in your local area – as we are. We also believe – as Vivek suggests in his article – that our technology is a little unique but this doesn’t by any stretch of the imagination mean that others are not, or could not, doing similar things. Both Youtube and Twitter have been cloned and replicated in more forms that you can imagine – but they simply got it right the first time and made it simple for users. We are certainly hoping that we have made our product simple to use for those that interact with it. Most importantly – and I absolutely think this is the most critical aspect – is the feedback that users provide. Launching is exciting, but user feedback dwarfs launching 100x fold.
Relevantly, it is foolish to think that popular products won’t be cloned – I would suggest that products which are popular will always be cloned in some manner because it’s part of the iterative process and it’s in peoples nature to copy the idea and attempt to replicate success from it. Much of this inherent logic exists in the age old axiom – imitation is the greatest form of flattery. If you are a startup – accept this – don’t attempt to fight it too greatly but rather put barriers or ‘road-blocks’ in place that stop any potential ‘idea theft’ from occurring such that if competitors become large – then you can take appropriate action. It’s in the execution – not in the idea. Ideas don’t make products, successful execution of ideas does. Importantly, at least in my mind, going public from ‘day one’ in relation to your idea is not necessarily the best idea either. Build time is the greatest barrier to any sort of ‘idea theft’ you can have. The more code that is written, the harder it is to simply ‘clone’ – even though it may appear that way prima facie. Of course, the big problem here is that the longer you build – the less feedback you are receiving from consumers and users of your product. This all means that there must be a balance between the two which fairly attempts to rationalize each respectively. I suggested to a friend the other day who asked for some advice up to this point and I said the key is
Don’t build too long, don’t launch too late, don’t fail to engage users along the way – regardless of whether you are stealth or not. Ideas don’t make products, successful execution of ideas do.
So what is CrowdSend then? Well, I’m not going to reveal that just yet. You will find out soon enough either this month or next when we finally launch. Either way, launching is going to be fun – we get user interaction and we want to work on improving our product every single day from this user feedback.
Bring on 2010 I say.
No commentsModern Warfare 2 on Windows 7 x64
So I am all excited to get modern warfare 2 for a little relaxation time when I get the chance [which is not often] – only to discover that an install on Windows 7 x64-bit is an absolute nightmare. It’s a ridiculous proposition that a Gaming Studio – Infinity Ward – would release a game without even testing it on Windows 7 – yet this is exactly what they have done, and this is why there has been a huge amount of backlash in respect to this game. However, in order to get things running on my PC I thought I would post something to assist those trying to install on a Windows 7 x64-bit build. I note that this is the setup that allowed me to get it working and this may not work for everyone [different hardware etc].
1. The first error I got was a “Failed to Run Install Script” error. To solve this, you must download and install Steam as a separate download first – then open Start –> Run and type “C:\Program Files(x86)\Steam\steam.exe” -install “CD Driver” – where “CD Driver” is “D:” or “E:” or “F:”. So for example the final line would look like – “C:\Program Files(x86)\Steam\steam.exe” -install “F:”. This will get the Game installed.
2. When I attempted to run the game after install – all I got was nothing but a blank screen which required me to do a reset. To resolve this problem, I needed to fix DirectX. Goto C:\Program Files (x86)\Steam\steamapps\common\call of duty modern warfare 2\Redist\DirectX and run DXSETUP.exe. Install this file and Restart your PC
3. After restart, I got the same error again. So I searched around and found that I had to make the screen size 1024×768 for launch – so I had to adjust my settings for launch. This launched the game but presented me with yet another error.
4. Now I had the game started – but I received nothing but Garbled Text on load. So the game wouldn’t work at all. To solve this, I needed to update to the latest version of ATI Catalyst Software - but of course this is not supported in Windows 7 for my Graphics Card. When you attempt to install this on Windows 7 – it doesn’t get past the install splash screen. To resolve this, you must download a fix from MSFT to install ATI Catalyst Install Manager as Windows 7 has a problem with any sort of legacy card except the newest hardware. This solves the VC++ 2005 redistributable problems which prohibits installing and fixes the garbled text issue.
5. The game still seemed to have a “blackscreen” onload and so I thought that this problem might be related to the fact that it was in fullscreen – so I wanted to shift the game to “windowed mode”. To do this, you have to go into C:\Program Files\Steam\steamapps\common\call of duty modern warfare 2\players and you will see 2 .cfg files called config and config_mp. Open both these files in Notebook [config is for single player and config_mp is for multiplayer] and find line seta r_fullscreen “1″ and change it to “0″. This will fix the game to run in Windowed Mode and you can change it back at any time. When the game starts [and this fix was a key for me] – ensure that you just change the graphics under “settings” to basically make the window full screen.
6. Another problem I experiencing throughout this entire process was a fairly common one such that Comodo Personal Firewall kept buggin me to accept the game as a permissible firewall program. I had to edit a Custom Rule in Comodo to allow the game to access the Internet.
So after close to 4 hours total – combining a 40 minute game install time and then all the time spent trying to resolve these bugs – I managed to the start the game. To be honest, it is completely unacceptable in this day and age to purchase a game and have to go through hoops to try and run it. I would definitely not have purchased this game had I known all issues were present from the start and quite frankly any future games that Infinity Ward produce I will not be getting.
As a consumer, they owe a legal responsibility to ensure that their products are tested on all relevant platforms before they sell the game. It’s so evident that their strategy was to release the game as quickly as possible in order to grab as much revenue as they could in lieu of Christmas and deal with the fallout as it comes. Whilst the official gaming merchandise says “Vista” – it was a fatal error to release the game without testing on Windows 7 and prepare a patch fix for immediate release. Instead, they have angered the very hand that feeds them and in this regards many gamers in the future will not purchasing Infinity Ward games.
While it’s a good game, it’s unacceptable to except a normal consumer to have to go through all this simply to get the game working.
2 commentsCustomer Service is King
One of the companies that I greatly admire is Zappos.com led by a fantastic CEO - Tony Hsieh. The company essentially drives its revenue from the sales of shoes and has managed to etch its mark in the same manner that Amazon.com did for books. Zappos.com’s statistics are a little mind blowing for a company that is essentially still growing – more than 3.6 million products from 1,250 brands and more than 146,000 different styles. But that is not really what makes me love Zappos – rather, it’s the companies fanaticism about customer service – something that is seemingly lost in this day and age. It’s interesting to parallel & compare today’s customer service to that of the ‘olden days’ – the 1950’s and 1960’s – which was driven by person-to-person sales and advice with the primary business differentiator being which had a better & more engaging customer service paradigm. In my opinion, it’s something that needs to return to business in this day and age and technology should assist the promotion of such endeavors rather than seek to reduce it by pushing the customer experience to ‘automation engagement methodologies’.
The reality is that customer services cost a significant amount of money. To maintain call centers and front-line sales staff is an expensive exercise when you slap on top of this training, turn-over, culture problems and sales incentives. The model is one that needs a high degree of tuning – but it’s one that is not overtly difficult – something along the lines of what my father says about marriage – “happy wife, happy life” – except in this regard it’s more “happy staff, happy path”. That is, make the staff happy and watch the path of your company skyrocket forwards. You see, the reason I think Zappos has got things so right primarily relates to the fact that the staff who work at the company are generally excited to be there. They love what they are doing, they are passionate about the Zappos brand and they honestly believe that they are making a difference to the customer experience. It’s a far cry from other organisations – particularly at the enterprise level – which aim to cut cost by outsourcing the customer experience and who generally have poor employee morale which has been inherited through write-downs, management changes and degradation of the purported ‘Company Mission Statement’ or ‘Company Values’.
It goes without saying that by setting up your staff to be happy, you are maintaining their enthusiasm to be engaged in your business and as a facet of this – be engaged in the customer. The customer drives revenue, and the revenue sales drive the ability to keep staff happy and the business ticking over. You can see the cyclical action in this regard – it’s definitively not rocket science – rather it’s taking business back to basics and really looking at what makes it overtly tick in the first place. Most notably, it’s also fairly amazing to see how simple it is to achieve employee happiness. I would suggest that in small business, it’s primarily ensuring that you employ the right people who fit similarly with you – this is perhaps the hardest part – and one of the reasons that Zappos offers staff who get to the final round of the interview process more than $2,000 to leave. Yes, you read that right – to leave. Tony Hsieh believes by offering staff an incentive to leave – you are able to weed out those people who really don’t want to be there and who aren’t really interested in the organisation. It’s an interesting strategy and perhaps one that is not available to all business’ but one which has considerable merit.
After the post-employment process – that is the interviewing, questioning, cv-reviewing and generally attempting to ascertain whether a person is the best fit for your company from meeting with them for 2 hours or so (ridiculous in my opinion) most staff – and I say this as a vast generalization - are looking for flexible hours, safe working environment and good colleagues. Additional perks like free lunch or free t-shirts cost surprisingly little but go a long way in terms of staff ‘loving’ your business and wanting to over-extend themselves in times of need. Perhaps my former comment also deserves a little more explanation - interviewing someone for 2 hours is hardly the best way to get them to know whether they work for you – at most, it should be a prima facie indicator but by no means the final stamp of approval. Getting the person into your office, working with them on a project or asking them to interact with your colleagues at drinks is by far and large the best way to determine whether they are suitable for your business. While this isn’t always possible – for example, overtly hard in computer science engineering roles were source code is confidential – it is definitely possible for sales or customer facing staff.
In my opinion and experience so far, attempting to keep your staff happy is the only way to succeed. The have to love what they are doing and they have to believe in both the management team and what the company stands for. If this is enshrined in a ‘Company Mission Statement’ all well and good – but if it is not actively and knowingly reinforced every single day then it’s just another worthless piece of paper which sits along side – no doubt in such companies – the other 1000 ‘brain storming sessions’ which have gone no-where and ‘business continuity meetings’ which are pointless. Create the best culture you can in your own unique way, keep your staff as happy and engaged as you possibly can and then your business will grow organically through their enthusiasm and drive. Dislodging any aspect of this carefully crafted ‘Tim Davis Path to Success’ (ha) will result in probable downfall. As Jim Collins – author of Good to Great - puts it
first get the right people on the bus (and the wrong people off the bus) before you figure out where to drive it. People are not your most important asset – the right people are.
Once they are on the bus, drive it like crazy.
No commentsThe Google Wave World
So the world has been abuzz about Google Wave – the new Google product which purports to “revolutionize the world of email”. Having recently received an invite as part of Googles ‘developer preview’ of the system – I can say that it’s a fairly slick offering. The ideology behind wave is that it’s a real-time collaboration platform which allows you to communicate with your family, friends and business colleagues in sync. It’s basically a system which allows you to “see it happen as it happens” – so when your friends are typing a response to a wave that you sent them – you will see exactly what they are typing.
In this sense – it’s sort of merging Instant Messaging with email – for good or bad – to allow you to see what your contacts are typing as they type it. The system allows you to inject ‘blips’ (what Google call parts of a wave) into any area of a wave – which it’s great for document collaboration, but I’m not so sure this works as well with email. Injecting blips effectively allows you to break up an email and comment on particular sections of it – which is great when you want it turned on but having this feature available all the time – in my mind – confuses the flow of the wave when you are sending it to multiple people. Maybe it might take a bit of getting used too – but it means that everyone that the wave has been sent too can add and edit blips all over the wave at different points. This means, for example, that you could have 20 people leave comments on the first sentence of an email and then leave comments on the 2nd sentence and so forth.
One of the most confusing things for me at the moment is that you cannot do this with normal emails. You can only collaborate with other people that have wave accounts. What would make wave much more user friendly would be allowing waves to be sent to any email address and then users can simple comment inside the wave. At the moment this is not possible – so I can only send waves to other Google Wave Account holders which sort of restricts me using it all that much at this stage.
To show you how all works, Google have actually allowed waves to be “embeddable” – that is, you can embed waves into blog posts. So – you can actually respond to my wave and speak to me – if I have wave open, I will be able to see what you are typing in real-time and respond – in real-time. This is one of the cool things about the platform and I can see this becoming extremely popular when the system hits main stream. I did try to do this below, but it seems that this is again only a feature that is available to people who have wave accounts – so I disabled this feature because it’s pretty much useless at the moment for the majority of the population. Instead, I replaced the editable wave with the Google Wave movie.
I can understand that Google Wave is in in beta and they have a huge community development program in place so I have no doubt that the future will very much allow waves to be embeddable and sent to any email address.
2 commentsSetting up a Msysgit Server with copSSH on Windows
OK – let me start this post by saying this is absolutely NOT for the faint hearted. This was a serious – and I re-emphasize this – serious pain in the arse to the do. Having almost no experience in Linux before – copSSH emulates the Linux environment through cygwin – let me tell you that this process was not easy. If you are an expert and thought – “pfftt, this process was easy” – I will reserve my language and ask you to kindly move along :) For those of you with no clue at all (ala me) – then this post is for you.
Firstly, full credit goes to the fantastic team at msysgit – these guys rock for porting GIT to Windows – GIT is an unreal DVCS and so I cant thank them enough for making this all possible. Secondly, full credit goes out to the guys at StackOverflow – unreal website and lots of fantastic users that have helped answer questions which have allowed the making of this guide possible. Please feel free to ask me questions, but I strongly recommend StackOverflow as your first port-of-call as I may take longer in getting back to you than they will. Also, this instruction guide is how I have set it up – if you start changing things – may the force be with you!
Finally, if this process worked for you – please leave a comment telling me (and everyone else) that it works and share this article around. It took me quite a bit of time to figure all this out on Windows – not to mention the time to type up this guide – so I would appreciate a link back ;)
Pre-setup
- Download copSSH
- Download msysgit
- Download TortiseGIT
- Download PuTTY Installer
- *Optional Download Git Install Guide (this guide as a Printable PDF)
Step 1 – Installing copSSH
- You’ve got copSSH – now go on and install it.
- Install copSSH into the c:\SSH directory
- Write down the SvcCOPSSH password – you will probably never need it – but just in case.
- It will install and create a bunch of directories – (Aside: I have found that you don’t need to create a password on your Windows User account – it’s not necessary if you use the settings I have later)
- Goto Start –> Programs –> copSSH –> Activate a User
- You can only activate existing users on Windows – so you can choose Your Own Account or Administrator (or indeed another account but I’ve used the primary)
- Uncheck the option – Create keys for public key authentication – we will do this ourselves.
- Finish the Installation Process.
Step 2 – Setup copSSH
- Open Windows Explorer – go into C:\SSH\etc and open BOTH your ssh_config and sshd_config in WordPad (Aside: Note – one has a “d” and one doesn’t – it’s an important difference)
- ssh_config – Delete the # (pound) key next to “Port” and change this to something like 4837 (or whatever Port you want to use)
- sshd_config – Delete the # (pound) key next to “Port” and change this the same as that in ssh_config – i.e. in this case 4837
- sshd_config – Delete the # (pound) key next to MaxAuthTries and make this 2
- sshd_config – Delete the # (pound) key next to RSAAuthentication & also next to the PubkeyAuthentication
- sshd_config – Delete the # (pound) key next to PasswordAuthentication and make this no.
- Save all the changes to ssh_config and sshd_config.
- Open your Router IP Address (or however you access your router) and open the Port you are using – i.e. in this case 4837 (Aside: If you don’t know it – c:\cmd –> ipconfig /all – will tell you)
- Save these Port changes in your router (& restart your router if needed)
- Open Windows Firewall with Advanced Security Settings and create a rule which allows the Port you set in both ssh_config and sshd_config – in this case 4837 (also do this in your Firewall if your firewall requires it – maybe/maybe not)
- Restart Your PC.
Step 3 – Installing PuTTY
- Welcome back after the Restart – now Open the PuTTY Installer you downloaded.
- Install Everything
- Navigate to the Putty Installed Directory (usually c:\Program Files\PuTTY)
- Open PuttyGen.exe
- Enter in Number of bits in a generated key: 4096
- Move your mouse around randomly as instructed until finished – don’t close PuttyGen!
- Open Windows Explorer and Navigate to c:\SSH\Home\<user>\.ssh\ – i.e in our case c:\SSH\Home\Administrator\.ssh\ (Aside: If .ssh doesn’t exist – you can only create it via a cmd.exe prompt – open cmd.exe and enter cd C:\SSH\Home\<user>\ then enter mkdir .ssh)
- Create a new file called authorized_keys (Aside: if it’s not there – Right Click – New Text Document – Delete everything (including the *.txt) – name the file authorized_keys)
- Open PuttyGen and Copy/Paste the Public Key for pasting into OpenSSH authorized_keys files code.
- Still in PuttyGen – save the Private Key as private_key.ppk in the same c:\SSH\Home\<user>\.ssh\ – i.e. i.e in our case c:\SSH\Home\Administrator\.ssh\private_key.ppk
- You should now have 2 files in this directory – authorized_keys and private_key.ppk
- To test our connection – load up putty.exe from the same c:\Program Files\PuTTY
- Enter your IP Address and Port in the Session window (Aside: If you don’t know your IP – c:\cmd –> ipconfig /all – will tell you)
- Click on SSH in the left hand menu and select – Auth – then navigate to your private key c:\SSH\Home\<user>\.ssh\private_key.ppk
- Hit Open and a terminal will open asking you to Enter Login Name: – enter your <user> – i.e. in our case Administrator
- You may get a message about Accept Public Key – type yes & if you get logged in great!
Step 4 – Installing msysgit
- Open the msysgit installer package.
- Ensure its C:\Program Files\Git (x32 bit) or C:\Program Files (x86)\Git (x64 bit)
- Set Use Git Bash Only (Aside: I wanted to only Use Git Bash console but if you want to Run Git from the Windows Command Prompt then you have to select this option – I would recommend only options 1 & 2 unless you really know what you are doing)
- Select Use (Tortoise)Plink available via C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe. If it’s not available in the installer then set the variable in the windows environment to GIT_SSH=/path/to/TortoisePlink.exe. (Aside: I set this as using just PuTTY Plink.exe as opposed to TortoisePlink.exe – would recommend settings this instead to c:\Program Files\PuTTY\plink.exe but it’s up to you)
- Let it install and have a laugh in the meantime.
- Once it’s installed – you now have 2 windows which I will name 1. Git Bash (Right Click Mouse on a file/folder in Explorer) and 2. Start –> Programs –> copSSH –> Start a Unix Bash Shell – Unix Bash.
- Finally, goto your Git-Core folder in the GIT installed directory - C:\Program Files\Git\libexec\git-core (x32 bit) or C:\Program Files (x86)\Git\libexec\git-core (x64 bit) – and copy the files git.exe, git-receive-pack.exe, git-upload-archive.exe and git-upload-pack.exe and paste these into your C:\SSH\Bin.
Step 5 – Modify the User Environment
- The problem with copSSH is that it sets its $HOME environment to the c:\users\<name> or c:\Documents and Settings\<user> variable – and GIT looks for authorized_keys in this folder. Of course, we don’t want this – we setup our Server Environment in the C:\SSH\Home\<user>\.ssh and so we want GIT to look for keys in there.
- Open Windows Explorer – go into C:\SSH\Home\<user>\ and open the .bashrc file using a text editor (Aside: Be sure not to attempt to format this file as it has Unix Encodings NOT Dos encodings – i.e. just open it in a text editor and don’t use another viewer unless you want encoding errors – you don’t need to read the text in this file if you are following these instructions to a tee.)
- Put the Cursor at the beginning of the .bashrc file and use CTRL+F to find the following text - bashrc file.
# User dependent .bashrc file#
- After the text .bashrc file# (after the pound with a space) – paste in - export HOME=/c/SSH/home/<user> - i.e. in our case export HOME=/c/SSH/home/Administrator
- Ensure there is a “space” before and after this paste in – i.e. .bashrc file#<space>export HOME=/c/SSH/home/Administrator<space>Shell Options#
- Save this file and close it.
- Copy this file and navigate to your windows assigned home directory (Aside: GIT will still be looking for your path in this directory so we need to set to refer to our C:\SSH\Home\<user>\ directory instead)
- Paste this in your c:\users\<name> or c:\Documents and Settings\<user> – so it now has c:\users\<name>\.bashrc for example.
- Open both a Git Bash (Right Click mouse in Explorer) and a Start –> Programs –> copSSH –> Start a Unix Bash Shell – Unix Bash shell
- Type echo $HOME – into both – they should both spit out – /c/SSH/Home/<user>
- If one does not – you need to set it via - export HOME=/c/SSH/home/<user>
Step 6 – Install TortiseGIT
- Install TortiseGIT per the standard installer using plink.exe (Aside: This should be the same as that setting at Step 4.4)
- Once the install has completed, open Windows Explorer.
- Right Click on anything and goto TortiseGIT –> Settings
- Select General and ensure the MSysGit path is seting to C:\Program Files\Git\bin (x32) or C:\Program Files (x86)\Git\bin (x64)
- Select Network and ensure that this is set to the same plink.exe path that we set in Step 6.1.
- Select Save then OK.
Step 7 – Using GIT and Plink
- Navigate to c:\SSH\Home\<user> and create a new directory called <myapp>.git – i.e. c:\SSH\Home\Administrator\myapp.git
- Right click on this new directory and select Git Bash
- When the window loads enter git –bare init
- You’ll now see a (BARE: master) appear and can close the window.
- Navigate to c:\Program Files\PuTTY and open pageant.exe - a small icon will appear in your system tray at the bottom right hand corner of your screen (a PC with a Hat on it) – open this and add your key from c:\SSH\Home\Administrator\.ssh\private_key.ppk (Aside: I recommend adding pageant.exe to your Start –> Startup folder so this will load each time you start your PC. To do this, goto Start –> PuTTY and right click on pageant.exe. Then change the target path to c:\<path-to-dir>\pageant.exe dir:\<path_to_private_key>\private_key.ppk. Then drag pageant.exe to your StartUp folder – this will then load both pageant.exe and your private key each time the system loads. Refer here if confused.)
- Now it’s time to clone this repository to our local development environment and finally start using GIT
- Navigate to where you want to have your local repository – in my case D:\Git\
- Right click inside this Directory and hit Git Clone
- Enter your URL as ssh://<user>@<ip_address>:<port number>/SSH/Home/<user>/<git directory> – i.e. in our case ssh://administrator@127.0.0.1:4837/SSH/Home/administrator/myapp.git
- The Directory should have the correct path – i.e. in my case D:\Git\myapp
- There is no need to Load Putty Key as we have already done this using pageant in Step 7.5.
- Hit OK and with a bit of luck (a lot of luck) you will get a successful clone.
Step 8 – The Real Test
- Cloning is one thing – the real test is pushing a new commit.
- Go to your newly cloned directory - D:\Git\myapp
- Add a New Text Document.txt
- Go back to just D:\Git\ –> Right Click on the Folder –> Git Commit –> “master” …
- Enter a new Commit message “Test” & tick the checkbox for Not Versioned commit on the file New Text Document.txt.
- Hit OK & then hit Push.
- Ensure Local: master to Remote: master (for this test) & Remote: origin
- Hit OK and you should get below
Counting objects: 1, done.
Compressing objects: 100% (1/1)
Writing objects: 100% (1/1)
Writing objects: 100% (1/1), 244 bytes, done.
Total 1 (delta 0), reused 0 (delta 0)
To ssh://administrator@127.0.0.1:4837/SSH/Home/administrator/myapp.git
0526eba..a1bf4a4 master -> master
If yes (get a beer), if no (see Problem Guide and get ready for tears, profane language and keyboard bashing)
Problem Guide
copSSH
- I don’t understand how to install copSSH – can’t you add some pictures? No, but this guy can.
- I want to add another directory instead of installing my GIT repo in the home account ? OK, see here which must be done via Unix Bash.
- When I check services.msc – I can see that the service has stopped :( – what can I do ? You can setup a dependent copSSH service if you are brave. (tip: if you don’t know what you are doing, don’t stop the service ever – when you make changes to c:\SSH\etc\ directory restart your PC instead)
PuTTY
- Can I create keys with less encryption than 4096 from Step 3.5? You can never have enough encryption so no (well at least it’s my opinion!)
- I cant connect via PuTTY? You may have to regenerate your keys via puttygen.exe and put them back into your /.ssh/authorized_keys file per the Step 3 Instructions above.
GIT
- I keep getting “fatal: the remote end hung up unexpectedly”? Open a Git Bash window and type echo $HOME – ensure it is set to /c/SSH/Home/<user>/. If it is not – enter export HOME=/c/SSH/home/<user>
- I get “fatal: connection refused”? Check that you have correctly opened the port you have set on the service per Step 1.
- I get “fatal: no authorized methods accepted”? You will have to regenerate your keys with puttygen.exe and follow steps per 3.
- I get “git-upload-pack:command not found”? You must ensure that you have completed Step 4.7 and copied the relevant files into your c:\SSH\Bin directory.
Other
- Sorry cannot read your mind? But these guys can help instantly.