Chris McGrath’s Blog

Just another Developer’s Blog

The facebook phone

leave a comment »

I’ve been thinking about the future of phones lately, mainly mobiles and it has lead me to some interesting ideas. Pretty much at the moment the phone companies are ripping us off. And like many I think it is inevitable that mobiles will become voip phones and we will be charged for data not calls. But that’s an evolution of mobiles, how can we create a real revolution?

I think the revolution will be a merger with a fast evolving trend – social networking. I’m not talking about second class apps or sending sms messages which go on your profile, I’m talking about making the social network the primary purpose of the phone.

I see this as completely replacing phone numbers. The profile represents the person instead of a number. And since I’m calling a person not a number, I don’t care how it is answered. You could answer using your mobile, or on your computer.

And just imagine the integration this brings. When you call me I could see your latest status update, maybe see where you currently are.

I think this would push social networking to a level where it is completely integrated with your life.

But which social network, since phone carriers will most likely oppose such an idea it has to be a well established site. That really gives us three options. MySpace, facebook and twitter.

MySpace I don’t see this working for, and it’s dying fast. If they did invest in this it could save them (and put them back on top) but I don’t see this happening.

Twitter has potiental. It’s very much written as a service instead of a website, which gives it an advantage over facebook. The thing is twitter is great because it is simple, it says with tweets and doesn’t add anything else. So such services would need to be third party (like twitpic). This gives it an advantage of not one company being responsible for it all (which is anti competitive) but I question the reliability and how we can really integrate everything with it.

Now Facebook seems to be the clear winner. Huge user base, lots of functionality we want already. But there is one thing which really makes facebook the winner. On Facebook you are identified by your name. It seems simple but this really setup how facebook would be used. And it’s that culture a social networking phone needs. I don’t want to see that I’m getting a call from BuZzKill337, I want to see I’m getting a call from Greg Black.

If I was facebook this is what I would be investing in. It truly is a system that could make facebook one of the biggest companies in the world.


Written by Chris McGrath

July 15, 2009 at 1:46 pm

Posted in Blog

Tagged with

To anyone distributing an installer online…

leave a comment »

Please don’t call your installer Setup.exe. It might be fine when initially installed but people will forget what it contains within a week. And clearing out your downloads folder is really annoying when you have no idea what an file is. This especially goes out to the Microsoft Virtual PC team.

Written by Chris McGrath

July 13, 2009 at 3:23 pm

Posted in Blog

Tagged with ,

Keeping Names positive

leave a comment »

Just read this blog –

This is something that has always annoyed me too. Things like e.Cancel = true; just seem wrong.

The absolute worst case of this I have ever come across is in the Local Security Policy. In security options, there’s a policy of, “Domain member: Disable machine account password changes” which you can set to Enabled or disabled.

So you can enable the disabling of the machine account password changes or disable the disabling of the machine account password change.  This is just mind-boggling.

Written by Chris McGrath

July 10, 2009 at 9:53 am

Posted in Blog

Tagged with ,

In value set

leave a comment »

One thing which I quite often wish C# had a clean way to say if a variable is equal to one of many values.

Traditionally we’re stuck doing

myVal == 5 || myVal == 8 || myVal == 100;

we could say

new [] { 5, 8, 100 }.Contains(myVal);

but to me this doesn’t allow your intent to be read nicely. In fact, it just seems the wrong way around.

What we need is something like SQL’s in. so I could say

myVal in (5, 6, 100)

that reads much better. I remember that Delphi also had a similar command.

Written by Chris McGrath

July 9, 2009 at 3:38 pm

Posted in Blog

Tagged with , ,

Code Generation

leave a comment »

I’ve recently been playing around with code generation. It’s quite interesting stuff. If you play around with it there are two things to keep in mind.

1. What NOT to generate

Sounds simple but there is things that involve greater thought. You should also design your generated code so it can play nicely with other code. Partial classes, partial methods help.

2. When to use persistent code generation and when to use deliberate code generation.

Not always referred to by these terms but I think they are the best.

Persistent code generation has the generator taking responsibility for the generated code.

Deliberate code generation has the programmer taking responsibility for the code. The generator will only write to it when the programmer makes a deliberate action telling it to. Normally this will only be the initial creation but the programmer could tell it to regenerate it later.

Written by Chris McGrath

July 7, 2009 at 11:45 am

Posted in Blog

Firefox 3.5

leave a comment »

Overall I was disappointed with Firefox 3.5. It’s not that it’s not good – it is and it’s better than Firefox 3. It’s more the lack of new features that I actually care about. And the real surprising thing is that a big shake up happened in the browsing space after v3 which I would have thought would influence 3.5 more. That shake up was chrome. Now chrome might not have much of a market share but it did bring fresh new ideas. There are three in particular I would have thought would influence Firefox 3.5.

The New Tab Screen

Let’s compare this across browsers. Firefox has always made it a blank white page, Internet Explorer improved on it to provide some information about tabs. But chrome really took advantage of it and placed heaps of meaningful stuff on it. Most importantly was a list of most visited websites. This was probably my biggest disappointment with firefox 3.5.

Lack of Chrome

Admittedly the way my Firefox is set up makes it almost as good as chrome, but Mozilla hasn’t put in any effort to improve this.


I’m a strong believer that you should avoid dialogs where ever possible. They interrupt the flow of a process. The Chrome team also shares this view. But the really cool thing they do is when a dialog is needed, it is held in a tab. As such it doesn’t stop you from using other tabs. That’s just a well thought out idea.

Written by Chris McGrath

July 4, 2009 at 7:59 am

Posted in Blog

Tagged with ,

One of the biggest problems with software… Updates

leave a comment »

Seriously, how come there isn’t a standard pattern for handling updates? Updating is annoying. Any program that makes updating it easy should be recognised.

So I’ll start it off with my favourite, Firefox. They do a great job at making the process simple. When an update is available it pops up a dialog you hit one button and it’s installed. Further, it makes it even less intrusive by waiting for restart before doing the actual install. This should be the goal of all software developers.

I think a major problem we’ve got ourselves into is thinking that an update is just an install. It may sound logical, you’re installing a new version over an old version, but there is a big difference. An install has to find out information – where to install it, what parts to install and other options. An update already knows (or should already know) this information. Hell, you don’t even need to make people re-agree to the licence agreement if it hasn’t changed.

Now let’s look at some bad ones: TortoiseSVN. It seems to make an update about once a month, and how does it tell you? It pops up a dialog saying an update is available and go to the website to download it. You then go to the website, download the full installer and perform a full installation. Also the dialog has no “Don’t tell me about this update again!” button, so it will keep popping up until it’s installed.

But at least TortoiseSVN waits until you use it to pop up the message. Daemon Tools pops up the message as soon as windows starts. And that’s a tool that I don’t use very often and am happy with how it works, why should I update it?

Finally there’s iTunes. I think iTunes has some great examples of horrible user interactions (I’ve written about it before here) and how to handle updates is no exception. First, an update is 60MB! I can’t understand why the full installer is 60MB, for an update they should be able to make it much smaller. Then they have this “Apple Software Update” which runs in the background.  Yet iTunes itself can detect when an update is avaliable. Now the Software Updater also tries to push Safari on you; and quite aggressively. After seeing this apple fan boys can’t complain about Microsoft pushing stuff on us. Then the installer runs, takes much longer than a update should and oh, it decides to add those shortcuts back that I deleted.

Which leads me to my final difference between installers and updates – shortcuts. An installer puts shortcuts on the machine, if they aren’t there when an update is run it’s because the user deleted them – SO DON’T PUT THEM BACK!

Written by Chris McGrath

July 2, 2009 at 2:49 pm

Posted in Blog

Tagged with ,