Just a quick note to say I have secured a new contract. A bit down on rate, but the market is pretty slow at the moment. Still doing .NET - I had hoped in a dream world to be doing all freelance at this stage, but a couple of projects fell through last week so that wasn't to be.
Still have a few things in the air, and things looking brighter on that front.
Contract market in the UK is pretty slow at the moment, so if any SANZA's thinking of coming over, might pay to leave it a month or two and see how the market shakes up after the new financial years budgets have shaken out.
BTW still looking for freelance work - no job to big or small - particularly in Rails or Cocoa as trying to get a commercial portfolio together. Something around $30/hr would be fine.
My .NET rates would be a higher due to what I bring to the table, but still look at anything.
james (at) softwarex (dot) co (dot) nz is first port of call.
Discussions relating to Software Development. Other rants thrown in for free
Thursday, May 29, 2008
Friday, May 23, 2008
Registered iPhone Development Company
My Company is now registered for development with the iPhone. It's pretty exciting times in my opinion, almost like the start of the computer age.
I have a few ideas for apps, but most of my time is currently taken doing work for other companies.
If you want any iPhone apps developed then give me a shout at james at softwarex dot co dot nz. Happy to discuss any kind of terms including profit share etc.
I have a few ideas for apps, but most of my time is currently taken doing work for other companies.
If you want any iPhone apps developed then give me a shout at james at softwarex dot co dot nz. Happy to discuss any kind of terms including profit share etc.
Friday, May 09, 2008
Shameless self promotion
As part of my push to become a telecommuting freelancer, I have to become a shameless self promoter and networker. Anyone who knows me will probably say that won't be much of a stretch.
Anyway, with that in mind...
I am finishing up my current gig soon (9/5) and am looking for more work. Preferably telecommutable, but can be on site in the UK.
I can/will do any of the following:
I have also have been using .NET 3.5 for about 6 months since Beta 2 I think it was, and am becoming a big fan of the ASP.NET MVC framework.
I can be contacted at james (at) softwarex (dot) co (dot) nz in the first instance.
Thanks. Normal programming will resume.
Anyway, with that in mind...
I am finishing up my current gig soon (9/5) and am looking for more work. Preferably telecommutable, but can be on site in the UK.
I can/will do any of the following:
- C# - ASP.NET/WinForms/WPF
- anything database related
- C/C++
- Cocoa/Cocoa Touch iPhone
- Ruby on Rails (just beginning that so rate will be lower!)
- Delphi
- Cobol
I have also have been using .NET 3.5 for about 6 months since Beta 2 I think it was, and am becoming a big fan of the ASP.NET MVC framework.
I can be contacted at james (at) softwarex (dot) co (dot) nz in the first instance.
Thanks. Normal programming will resume.
Wednesday, May 07, 2008
Vodafone gets iPhone in NZ (and others)
Announcement here doesn't say 3G iPhone, but take it as read...
Saturday, May 03, 2008
Best programming quote ever!
..."just not an actual problem, it's a fun programming exercise that you're doing because it's just hard enough to be interesting but not so hard that you can't figure it out"
Comes from Joel talking about Mesh
It's funny cos it's true...
Comes from Joel talking about Mesh
It's funny cos it's true...
Friday, May 02, 2008
Over complicating things
A few years ago when I wore a younger man clothes, I worked along side some COBOL programmers. They had been in the industry for ever and had seen it, tried it and done it. But still they used COBOL.
At the time Delphi was the best tool for the job, so I spent a lot of my time trying to convince them of this. "That's alright son. We'll stick with COBOL. We know it inside out, and anyway what will we do when the next trick language comes along?"
I would scoff at this, shake my head and go back to my programming.
A couple of years later C# was the best tool for the job, so I spent a lot of my time trying to convince them of this. "That's alright son. We'll stick to COBOL. We know it inside out, it does Windows now, and what will we do when the next trick language comes along?"
I would scoff at this, shake my head and go back to programming.
Now I am learning Ruby/Rails and Objective-C and they are still using COBOL. I no longer work with them, so don't have the opportunity to tell them how great Rails is, but I know their answer already.
What is the point of all this?
Well, over the years the only true constant I have witnessed in the IT industry is a tendancy to over complicate and over engineer projects.
Here is a real life example: A project I worked on once was a ASP.NET intranet Portal application. Different parts of the portal talked to different systems, coming from different places. All of these other systems either published web services, or were developed in house connecting to an in house SQL Server database.
A Biztalk middle layer was introduced to "expose a common middle tier" to the front end.
The real reason was because the Lead Architect of the system was a Biztalk guru. The only thing the Biztalk layer added to the system was an extra layer and slowed it down.
This sort of things happens a lot. Ok, sometimes it's great to build redundancy into the system, but most of the time we over engineer because we want to add another buzzword to our C.V., or find a reason to try out some flash new tech.
These days of agile and iterative processes, surely isn't it better to release for the now, get it out the door and add to it if the business needs change? Builders don't build a mansion when the clients ask for a 2 room apartment, just in case they have kids one day. Why do we?
And anyway, like my COBOL mates would say, no point building a mansion. Something new and whizzy will come along making the mansion look old and tired so it will be bull dozed and started again. Hmmm, maybe they did know what they were talking about after all.
At the time Delphi was the best tool for the job, so I spent a lot of my time trying to convince them of this. "That's alright son. We'll stick with COBOL. We know it inside out, and anyway what will we do when the next trick language comes along?"
I would scoff at this, shake my head and go back to my programming.
A couple of years later C# was the best tool for the job, so I spent a lot of my time trying to convince them of this. "That's alright son. We'll stick to COBOL. We know it inside out, it does Windows now, and what will we do when the next trick language comes along?"
I would scoff at this, shake my head and go back to programming.
Now I am learning Ruby/Rails and Objective-C and they are still using COBOL. I no longer work with them, so don't have the opportunity to tell them how great Rails is, but I know their answer already.
What is the point of all this?
Well, over the years the only true constant I have witnessed in the IT industry is a tendancy to over complicate and over engineer projects.
Here is a real life example: A project I worked on once was a ASP.NET intranet Portal application. Different parts of the portal talked to different systems, coming from different places. All of these other systems either published web services, or were developed in house connecting to an in house SQL Server database.
A Biztalk middle layer was introduced to "expose a common middle tier" to the front end.
The real reason was because the Lead Architect of the system was a Biztalk guru. The only thing the Biztalk layer added to the system was an extra layer and slowed it down.
This sort of things happens a lot. Ok, sometimes it's great to build redundancy into the system, but most of the time we over engineer because we want to add another buzzword to our C.V., or find a reason to try out some flash new tech.
These days of agile and iterative processes, surely isn't it better to release for the now, get it out the door and add to it if the business needs change? Builders don't build a mansion when the clients ask for a 2 room apartment, just in case they have kids one day. Why do we?
And anyway, like my COBOL mates would say, no point building a mansion. Something new and whizzy will come along making the mansion look old and tired so it will be bull dozed and started again. Hmmm, maybe they did know what they were talking about after all.
The twitter effect
I track certain keywords in Twitter. One of them is Rails. Not long ago this article was released. I know it was not long ago because twitter has just gone crazy with the story.
It's amazing to see the word spread. Just shows some of the power of the social network.
It's amazing to see the word spread. Just shows some of the power of the social network.
Monday, April 28, 2008
Race Results

I won't be winning any olympic medals, but I managed to finish in just over an hour. I had issues with my calf muscles leading up to the race so didn't manage as much training as I would have liked but I don't think it would have made much difference. I was reliably told that there was only one hill in the race, which was true, except for the fact that the "hill" was an undulating 8km mass! Anyway, whinging over. It was a lovely day and a well organized event, and the proceeds all went to a worthy cause.
To all of you who sponsored, thank you very much. Your support made the difference and spurred me along up the steepest parts of the hills! The total is up to £140 so far, and the website stays up for another 90 days, for those of you who may have forgotten! (www.justgiving.com/jamessugrue)
Anyway, it's something I will definitely do again (although maybe I'll pick a flatter course next time) and intend on keeping the training up so next time I can break the hour
Friday, April 25, 2008
New Family Member
As a long time and dedicated Windows developer and user, it will probably come as a surprise to some of the people who know me to hear that a nice TNT delivery man called today and left the following package for me:

I have decided that like James, I am also going to attempt a change in direction. For me though, I hoping to wean myself off the endless hamster wheel of software development and at long last delve into the equally challenging but for me potentially more rewarding career as a writer. My genre of choice will inevitably be SciFi and will be likely to span the range from near future dystopia to giga-epoch spanning space opera.
For me, the biggest issue is the problem of being overloaded with little projects of which writing is usually only one. In situations like this I would sit at my HP laptop and be almost literally paralysed by the need to make progress on so many tasks that I don't actually do anything at all. The Air will help me as I intend to have that machine as a dedicated creative space.
I will be posting the traditional "unboxing" article and first impressions soon.

I have decided that like James, I am also going to attempt a change in direction. For me though, I hoping to wean myself off the endless hamster wheel of software development and at long last delve into the equally challenging but for me potentially more rewarding career as a writer. My genre of choice will inevitably be SciFi and will be likely to span the range from near future dystopia to giga-epoch spanning space opera.
For me, the biggest issue is the problem of being overloaded with little projects of which writing is usually only one. In situations like this I would sit at my HP laptop and be almost literally paralysed by the need to make progress on so many tasks that I don't actually do anything at all. The Air will help me as I intend to have that machine as a dedicated creative space.
I will be posting the traditional "unboxing" article and first impressions soon.
Wednesday, April 23, 2008
New blog. Change in focus for this one
As I have announced in a previous post, I am looking for a change in direction. As such, I am opening a new blog which will concentrate more on things like Ruby on Rails, iPhone and Mac development and anything else that I encounter while trying to reach my goal.
The new blog is currently under development, and I am writing it completely in Ruby on Rails as a test site and a showcase site all rolled into one. I will be posting my thoughts about the process on the other blog when I get something publishable.
What does this mean for this blog? Well I still intend to post here, but it be more of a focus on .NET related topics, and general rants. If over time I succeed in my goal, then I would guess that poosting will slow down here and increase over on the other blog, but time will tell. In the meantime it will be transmission as usual.
The new blog is currently under development, and I am writing it completely in Ruby on Rails as a test site and a showcase site all rolled into one. I will be posting my thoughts about the process on the other blog when I get something publishable.
What does this mean for this blog? Well I still intend to post here, but it be more of a focus on .NET related topics, and general rants. If over time I succeed in my goal, then I would guess that poosting will slow down here and increase over on the other blog, but time will tell. In the meantime it will be transmission as usual.
Monday, April 21, 2008
Using Control + Alt + Delete in a Remote Desktop Session
Just a note to self as much as anything else...
If you are in a virtual remote desktop session you can't use Control Alt Delete to bring up the shut down / reboot dialog. In this case try Control + Alt + End to achieve the same result.
If you are in a virtual remote desktop session you can't use Control Alt Delete to bring up the shut down / reboot dialog. In this case try Control + Alt + End to achieve the same result.
Friday, April 18, 2008
Mac tips for the switcher: Print Screen
I was in need of capturing the current window (for the last post actually) to store as an image. I went to press Alt + PrnScrn. Ah. Where's the print screen? So after doing a bit of research, here are all the ways you can do a screen capture in OSX.
Capture All
Press Command + Shift + 3
This will place a document in pdf format on the desktop. You can then open and Save As...
Capture selected Window
Press Command + Shift + 4 + Space. This will turn the cursor into a camera and you then click the window you want to capture. Again it will save to the desktop in PDF
Select Area to Capture
Press Command + Shift + 4. This will turn the cursor into cross hairs which you then select what you want captured.
While these are useful, what if you want to save to the clipboard instead of saving to the desktop? Well Apple has thought of that too - just press the Cntrl key with all the combos above.
Capture All
Press Command + Shift + 3
This will place a document in pdf format on the desktop. You can then open and Save As...
Capture selected Window
Press Command + Shift + 4 + Space. This will turn the cursor into a camera and you then click the window you want to capture. Again it will save to the desktop in PDF
Select Area to Capture
Press Command + Shift + 4. This will turn the cursor into cross hairs which you then select what you want captured.
While these are useful, what if you want to save to the clipboard instead of saving to the desktop? Well Apple has thought of that too - just press the Cntrl key with all the combos above.
Firefox 3.0 b5

I have been sipping from the Firefox firehose for a long time. Long enough to remember that it used to be called Firebird! (bet ya didn't know that!)
Since moving to the Mac about a year ago, I have been pretty happy with the speed of Safari so have pretty much just used that. I use Camino when I encounter sites that isn't Safari friendly - my bank for example. The reason I choose Camino over Firefox is purely aesthetics. Camino renders widgets natively, whereas Firefox 2.x doesn't.
After reading a bit about the speed and memory improvements in the last FF3 beta, I decided to give it a try. Wow. They weren't kidding about the improvements. I like the new skin and it is noticeably quicker to load and render. FF3 now feels about as fast as Safari 3.x when rendering pages.
The biggest new feature about FF3 is that is now renders widgets natively. Nice.
I have been using FF3 for a week and haven't used Safari once. I think that says it all.
Thursday, April 17, 2008
Looking to change direction...
A conversation on Twitter yesterday with Tim got me thinking.
I have been getting a little bored with being a software developer of late. I'm not really sure if it is a general apathy toward software development in general, or just the stuff I have been doing.
As any regular reader to the blog will know (all three of you), I am a born again Apple addict. I think my development boredom has come out of the fact that I sit in front of Windows for 8+ hours a day. Every time I fire up one of my Macs, my inner ten year old, open to the endless possibilities of computing returns, only to be beaten away by the 32 year old reality of being a commercial software developer when I sit back in front of a Windows box.
So I have made a conscious decision to make a change. My end goal is to eschew Windows completey and make a living as a developer on the Apple platform. I have made a start on that front with a bit of iPhone consulting, but by the end of the year I am looking to either be a full time Mac developer/consultant - whether that be Cocoa or Cocoa Touch, and/or get more in to Ruby on Rails.
I am also aiming to be getting 75%+ of my income from telecommuting gigs. Tim is showing me the way on that front, he has been completely freelance for the last 5 or so years and hasn't looked back.
Of course commercial and financial pressures might mean I have to do a little .NET stuff here and there, but there's no point setting a goal if you don't set the bar high enough. (That's enough mixed metaphor's for one post)
BTW if you are a Apple dev shop looking to offload some work I can be contacted at
james at softwarex.co.nz
I have been getting a little bored with being a software developer of late. I'm not really sure if it is a general apathy toward software development in general, or just the stuff I have been doing.
As any regular reader to the blog will know (all three of you), I am a born again Apple addict. I think my development boredom has come out of the fact that I sit in front of Windows for 8+ hours a day. Every time I fire up one of my Macs, my inner ten year old, open to the endless possibilities of computing returns, only to be beaten away by the 32 year old reality of being a commercial software developer when I sit back in front of a Windows box.
So I have made a conscious decision to make a change. My end goal is to eschew Windows completey and make a living as a developer on the Apple platform. I have made a start on that front with a bit of iPhone consulting, but by the end of the year I am looking to either be a full time Mac developer/consultant - whether that be Cocoa or Cocoa Touch, and/or get more in to Ruby on Rails.
I am also aiming to be getting 75%+ of my income from telecommuting gigs. Tim is showing me the way on that front, he has been completely freelance for the last 5 or so years and hasn't looked back.
Of course commercial and financial pressures might mean I have to do a little .NET stuff here and there, but there's no point setting a goal if you don't set the bar high enough. (That's enough mixed metaphor's for one post)
BTW if you are a Apple dev shop looking to offload some work I can be contacted at
james at softwarex.co.nz
Monday, April 14, 2008
10km Charity Fun Run
I am participating in a 10km fun run for the Marie Curie Cancer Care organisation on April 27. From their blurb:
I really can't think of a better way to expend a few calories and raise a little money. My original target was £100 but through the generosity of friends and family we have reached that in under a day!
But, you can never raise enough money so for anyone reading this with some spare cash here is the link to my page and feel free to donate as much or as little as you can. As the old saying goes, It all helps.
Marie Curie Cancer Care provides high quality nursing totally free, to give terminally ill people the choice of dying at home supported by their families. Your local Marie Curie Hospice actively promotes quality of life for people with cancer and provides support for their families. The services are completely free to patients. World class scientists at the Marie Curie Research Institute are investigating how cancer develops to find better ways of treating the disease in the future.
I really can't think of a better way to expend a few calories and raise a little money. My original target was £100 but through the generosity of friends and family we have reached that in under a day!
But, you can never raise enough money so for anyone reading this with some spare cash here is the link to my page and feel free to donate as much or as little as you can. As the old saying goes, It all helps.
Sunday, April 13, 2008
.NET NZ (expat) catchup in London number 2.0
Nic, Dan, Tana, Vince, Shekhar and myself got together for a few drinks and a chat in Earl's Court recently. We have these catchup's roughly monthly - it's just a way for a bunch of Kiwi geeks to have a catch up, a few beers and a general chin wag.
Topic of conversation was varied - from Rugby to Security concepts, but never strayed to far from Web development, and our thoughts on Microsoft, and where they are heading. We talked a bit about Apple, and Mac's in general - three of us run Mac's as our personal machines. The general consensus is that if you are running Windows, then Apple hardware is the fastest way to go!
Anyway, any other Kiwi geeks in the UK drop me a line and I'll be sure to send you an invite next time it's held. To the other guys, cheers for a enjoyable evening and catch ya next time!
Topic of conversation was varied - from Rugby to Security concepts, but never strayed to far from Web development, and our thoughts on Microsoft, and where they are heading. We talked a bit about Apple, and Mac's in general - three of us run Mac's as our personal machines. The general consensus is that if you are running Windows, then Apple hardware is the fastest way to go!
Anyway, any other Kiwi geeks in the UK drop me a line and I'll be sure to send you an invite next time it's held. To the other guys, cheers for a enjoyable evening and catch ya next time!
Wednesday, April 09, 2008
Tips from the Frontline: null coalescing operator
I knew about this feature but for some reason thought it was new in .NET 3.5.
It's not, the null coalescing operator has been available since 2.0.
So what is it? It's hard to say but easy to use, so a code example might be easier:
string name = Request.QueryString["name"] ?? "Please Supply a Name";
Basically it allows you assign a value for the not null case and an alternate value for the null case.
This used to be done using the conditional operator:
string name = null != Request.QueryString["name"] ? Request.QueryString["name"] : "Please Supply a name";
Very handy for example when populating C# Model Classes from a DataReader.
It's not, the null coalescing operator has been available since 2.0.
So what is it? It's hard to say but easy to use, so a code example might be easier:
string name = Request.QueryString["name"] ?? "Please Supply a Name";
Basically it allows you assign a value for the not null case and an alternate value for the null case.
This used to be done using the conditional operator:
string name = null != Request.QueryString["name"] ? Request.QueryString["name"] : "Please Supply a name";
Very handy for example when populating C# Model Classes from a DataReader.
Friday, April 04, 2008
Who needs Ruby on Rails?
This is one of the funiest things I've seen in a long while. I guess it helps that I have maintained a few COBOL projects in the past.
For fsk sake.
http://news.bbc.co.uk/sport1/hi/motorsport/formula_one/7328018.stm
Lets make this clear. Nothing Max Mosely has done is illegal, or infact remotely illegal. What people do in private, is their business. Period. The fact that something gets published and put into the public domain, does not make it public domain.
Let me say that again. The paper in question posted a story and video of a private act and made it public. This in no way makes it public.
Issuing statements like this doesn't distance Toyota, Honda, Mercedes or BMW from anything Mosely did. Because they were never implicated. To issue these sort of statements infact makes you look like a bunch twats. What they should have said was something like, "while we disagree with Mr Mosely's conduct, we find the posting of such material abbhorent and an invasion of privacy. Mr Mosely has our full support in this difficult time for him and his family"
That's what a company with intergrity and balls would say. Or better yet, just say nothing.
This comes from the PC society we have become. I for one am sick of it. Surely the out cry should be against the paper, not whether or not some old dude gets off on being spanked by someone dressed up in a Nazi uniform?
Lets make this clear. Nothing Max Mosely has done is illegal, or infact remotely illegal. What people do in private, is their business. Period. The fact that something gets published and put into the public domain, does not make it public domain.
Let me say that again. The paper in question posted a story and video of a private act and made it public. This in no way makes it public.
Issuing statements like this doesn't distance Toyota, Honda, Mercedes or BMW from anything Mosely did. Because they were never implicated. To issue these sort of statements infact makes you look like a bunch twats. What they should have said was something like, "while we disagree with Mr Mosely's conduct, we find the posting of such material abbhorent and an invasion of privacy. Mr Mosely has our full support in this difficult time for him and his family"
That's what a company with intergrity and balls would say. Or better yet, just say nothing.
This comes from the PC society we have become. I for one am sick of it. Surely the out cry should be against the paper, not whether or not some old dude gets off on being spanked by someone dressed up in a Nazi uniform?
Wednesday, April 02, 2008
ASP.NET MVC Framework - First Look
I have been playing with the ASP.NET MVC Framework (Preview 2) recently. For those of you who don't know what the MVC framework is about, then read the overview docs in the link above. (I'll wait).
Issues with ASP.NET
While the ASP.NET framework is a huge improvement over classic ASP, it does have some pitfalls and downsides. The Postback and Viewstate pattern does add flexibility, it does also add bloat in the form of encrypted values to your page. This means slower download times and ugly HTML (Some designers really, really hate this. Good synopsis of Viewstate issues and work arounds Here
While ASP.NET goes some way into code seperation, by splitting the View from the Code, the Page_Load mechanism can promote lazy developers into stuffing alot of business logic into there.
Also the current model makes unit testing ASp.NET pages difficult.
Alternatives
There are alternative patterns already being used. The current project I am working on uses the Model View Presenter pattern. MVP adds more seperation from standard ASP.NET and allows for greater testability. I quite like MVP and is probably better suited to larger projects, due to extra initial coding. I will do a follow up post on my experiences with MVP, but there are quite a few resources available for a quick grok.
While I like the MVP pattern, I would strongly recommend people looking at the MVC pattern also before comitting to the MVP.
Model View Controller
The MVC pattern is quite common in standard GUI apps. Cocoa development on the Mac and iPhone actively promotes and enforces the pattern, and Java developers have been using it for a while. It is only in the last few years that web developers have embraced the technology.
The ASP.NET MVC framework is still in beta, with Preview 2 being released recently. The major benefits I can see are
Along with these it enforces a logical project and solution layout, so going back to old code will be easier under MVC.
I went off on a tangent on what I originally thought I would post about, but I will post some sample code about MVC in the future as I get to grips with it.
Issues with ASP.NET
While the ASP.NET framework is a huge improvement over classic ASP, it does have some pitfalls and downsides. The Postback and Viewstate pattern does add flexibility, it does also add bloat in the form of encrypted values to your page. This means slower download times and ugly HTML (Some designers really, really hate this. Good synopsis of Viewstate issues and work arounds Here
While ASP.NET goes some way into code seperation, by splitting the View from the Code, the Page_Load mechanism can promote lazy developers into stuffing alot of business logic into there.
Also the current model makes unit testing ASp.NET pages difficult.
Alternatives
There are alternative patterns already being used. The current project I am working on uses the Model View Presenter pattern. MVP adds more seperation from standard ASP.NET and allows for greater testability. I quite like MVP and is probably better suited to larger projects, due to extra initial coding. I will do a follow up post on my experiences with MVP, but there are quite a few resources available for a quick grok.
While I like the MVP pattern, I would strongly recommend people looking at the MVC pattern also before comitting to the MVP.
Model View Controller
The MVC pattern is quite common in standard GUI apps. Cocoa development on the Mac and iPhone actively promotes and enforces the pattern, and Java developers have been using it for a while. It is only in the last few years that web developers have embraced the technology.
The ASP.NET MVC framework is still in beta, with Preview 2 being released recently. The major benefits I can see are
- Greater Testability and Mockability
- Greater seperation of concerns - logically breaking down app into components
- URL rerouting built in
- Elimination of PostBack and Viewstate
Along with these it enforces a logical project and solution layout, so going back to old code will be easier under MVC.
I went off on a tangent on what I originally thought I would post about, but I will post some sample code about MVC in the future as I get to grips with it.
Subscribe to:
Posts (Atom)