Friday, May 05, 2006

Broadband Pricing: A Study - Part 1

With Local Loop unbundling announced 4-May-06 it will be interesting to see how prices change over the next few months. We have been told over the years by ISP's that their pricing is controlled by Telecom. Now that they have access to the LL, lets see how much things change.

The original idea and data was compiled by Mike O'Leary and was suggested on the NZ Dot Net user group. Thanks Mike.

Broadband Prices as of 5-May-2006


Slingshot
PlanPrice
Express 3GB$29.95*
Extreme 5GB$39.95*
Sprint 10GB$49.95*
Ultra 10GB$79.95*

IHUG
PlanPrice
Pay as you go 500MB$29.95
Starter 3GB$39.95
Light 15GB$49.95

Orcon
PlanPrice
Starter 2GB$29.95*
Light 4GB$39.95*
Medium 10GB$49.95*

Xtra
PlanPrice
Basic 200MB$29.95*
GO 1GB$39.95*
Explorer 5GB$49.95*
Adventure 10GB$59.95*


* must have Tolls with this company otherwise add $10.

Wednesday, May 03, 2006

Government propose regulation in response to poor broadband uptake

It has just been announced that the Government is proposing to regulate Telecom to ensure better broadband uptake.

Part of the regulation also includes a proposal to unbundle the local loop.

This is great news for Internet users in New Zealand. Hopefully now we can get real broadband at a reasonable price. Not just what Telecom have given us.

To the uninitiated, Telecom currently holds a monopoly over ISP's in New Zealand, which basically requires them to use buy wholesale Broadband access from Telecom because it owns the "last mile" of the telephone network.

It will be interesting to see how Telecom/Xtra respond to this and to see what Broadband speed/Plans we get as a result.

Currently, I pay $NZ79 for 10Gb of data at 3.5Mb/s down and 512Mb/s up. This includes a static IP address.

Wednesday, April 26, 2006

Using Atlas on existing site

I have been playing with Atlas for ASP.NET April CTP for the last couple of days.

I quite like it so far, It is really easy to use if you are starting a new site, but not quite so easy if you are converting an existing site.

You have to do the following:

  • Install the Atlas CTP from Here

  • Open your existing solution and copy "Microsoft.Web.Atlas.dll" to the Bin directory of your solution.
    The default location for the dll is "C:\Program Files\Microsoft ASP.NET\Atlas\v2.0.50727\Atlas"

  • Add the following code to your web.config:

    Copy these elements as children of the <configuration> element:


      <configSections>
    <sectionGroup name="microsoft.web"
    type="Microsoft.Web.Configuration.MicrosoftWebSectionGroup">
    <section name="converters"
    type="Microsoft.Web.Configuration.ConvertersSection"/>
    </sectionGroup>
    </configSections>

    <microsoft.web>
    <converters>
    <add
    type="Microsoft.Web.Script.Serialization.Converters.DataSetConverter"/>
    <add
    type="Microsoft.Web.Script.Serialization.Converters.DataRowConverter"/>
    <add
    type="Microsoft.Web.Script.Serialization.Converters.DataTableConverter"/>
    </converters>
    </microsoft.web>

    Copy (or integrate) these elements as children of the <system.web> element:


        <pages>
    <controls>
    <add namespace="Microsoft.Web.UI" assembly="Microsoft.Web.Atlas" tagPrefix="atlas"/>
    <add namespace="Microsoft.Web.UI.Controls" assembly="Microsoft.Web.Atlas" tagPrefix="atlas"/>
    </controls>
    </pages>

    <!-- ASMX is mapped to a new handler so that proxy javascripts can also be served. -->
    <httpHandlers>
    <remove verb="*" path="*.asmx"/>
    <add verb="*" path="*.asmx" type="Microsoft.Web.Services.ScriptHandlerFactory" validate="false"/>
    </httpHandlers>
    <httpModules>
    <add name="ScriptModule" type="Microsoft.Web.Services.ScriptModule"/>
    </httpModules>


  • Start Programming!



In my case I just added an <atlas:UpdatePanel> around a couple of edit-inplace DataGrids.
Update Panels are quite good, they also allow updating based on triggers. For example you may want to update based on a selection on a DropDownList so you would:

<atlas:UpdatePanel runat="server" ID="Update1" mode="Conditional">
<ContentTemplate>
.....
</ContentTemplate>
<Triggers>
<atlas:ControlValueTrigger ControlID="DropDownList1" PropertyName="SelectedValue" />
</Triggers>
</atlas:UpdatePanel>




The only server control I would like (and I understand the security reasons) would be an atlas:FileUpload control.
As Scott Guthrie puts it "File-Uploads are a somewhat weird element in HTML -- since they are by-design non-scriptable (for security reasons, to avoid someone writing client-side script to maliciously upload a file from a browser).
As such, you'll need to be a little careful with how you use them with Atlas (or other Ajax frameworks)."

However, it would be cool if they had an atlas enabled FileUpload control, that you could tie in with an atlas:UpdateProgress control to give user feedback that the file is still updating. You can't do this at the moment, as the UpdateProgress fires before the FileUpload code, so any value in the FileUpload is cleared by a PostBack before you have a chance to do anything with it.

Any comments on how to get around this welcome!

Wednesday, April 19, 2006

Why you shouldn't believe everything you read on the Internet

This is a great reason to not believe everything you read on the Internet. I don't know anything much Java, but I do know a thing or two about .NET and most of the items on that list are plain wrong.

Here are a few of the more defamatory ones (with my comments):

"An Abundance of Experienced practioners. Nobody seems to know how to write .NET programs well and that's giving .NET a bad name"

I know a fair few .NET developers - C#, VB, Delphi and even COBOL. I can assure you they know what they're doing.

"Industrial Strength Collection Classes - The .Net libraries look like they were designed by high-school students, First year CompSci? students at best."

The writer obviously hasn't heard of Anders Hejlsberg who would be in my all time top 10 Software Architects.

"More Languages - The JVM is more "common" than the CLR."

This to me seems to be two seperate points, but I'll take the "More Languages" argument. Here's a list of .NET languages off the top of my head: C++, C#, VB, COBOL, Object Pascal (Delphi), Python, J#

"Sane Coding Conventions - I don't know what's worse Hungarian notation or .NET coding conventions."

Surely sanity is in the eye of the beholder. I like the .NET conventions, plus Intellisense and sensible names in the class library mean I know the the difference between a namespace, class or method name.

"EmbeddedDevices - Java inside small packages."

If you don't count PocketPC's or SmartPhones as Embedded Devices.

"Comprehensive RDMS Driver Support - Can you find a ADO.NET driver for an open source database?"

MySQL
PostgreSql
Firebird

"Leads In Software Process Best Practices. Most best practices in software development are done in Java shops."

This is clearly wrong. I myself and most of the .NET developers I know use some or all of Patterns, n-tier design, Unit Testing. I don't think SoftDev best practice is limited to Java.

"Affordable Industrial Grade IDEs"

SharpDevelop, WebMatrix, Visual Studio Express are all free. Borland Developer Studio professional is about $300US.

I could go on but I won't. There is a challenge out by the original author to make an anti-list of why .NET is better than Java. I would love to but don't know enough about Java.
Besides, I would rather spend my time programming in .NET - its much more rewarding...

Wednesday, April 12, 2006

Gradient Fills

Gradient fills. Sure they look great, but they are everywhere these days. It seems bad taste to have a single color on your web site. If it isn't a dark to light or light to dark color blend then it's, like, so last week man.

Geez even Ford Motor Company have been at it. The solid blue oval has been replaced with a gradient blue oval.

As fads go, I don't think it's a bad one, but I think in a few years, with the benefit of hindsight, gradient fill will be as cringe worthy as paisley ties and 70's flares.

You heard it here first!

Monday, April 10, 2006

SQL Server 2005 Merge Replication

I have spent the last hour or so gettng Merge Replication working on SQL Server 2005 - connecting to a PocketPC. It was working fine but I moved the SQL Server on to a different box and couldn't exactly remember how to set it back up.

Here are the steps I used to get it going.

1. Install SQL Server 2005
2. Restore the database into the new SQL Server Instance
3. Create a new login for the database
4. Install SQL Server Mobile 2005 tools – this installs the server tools for creating IIS virtual directory etc
5. Register the dll sqlcesa30.dll in the directory you have created for the IIS virtual dir – the wizard doesn’t do this
6. When you create the Publication – make sure it is for Merge Replication and the Snapshot is stored in the same folder as the folder created above. Make sure the user rights have rights to the SQL Agent and the database you want to merge
7. Create a snapshot – Open the replication monitor to see if has worked. If you are backing up a database from another server - you may have to revalidate the snapshot as well.
8. Yay - If has worked – if not the see troubleshooting below


C# Code to Sync Data (appologies for the formatting - I cant seem to work out how to get the tabs to stay once the code has posted)

public static void SyncData()
{
SqlCeReplication repl = null;

try
{
   // Set the Replication object.
   repl = new SqlCeReplication();

   repl.InternetUrl = "http://[computer-name]/[iisAlias]/sqlcesa30.dll";
   repl.Publisher = "[publisher name]";
   repl.PublisherDatabase = "[database name]";
   repl.PublisherLogin = "[login]";
   repl.PublisherPassword = "[password]";
   repl.Publication = "[pub name];
   repl.SubscriberConnectionString = "Data Source='\\[dbname].sdf'";
   repl.Subscriber = "[sub name]";

   // Create the Local SSCE Database subscription.
   if (!System.IO.File.Exists(@"\[dbname].sdf"))
   {
      repl.AddSubscription(AddOption.CreateDatabase);
   }
   // Synchronize to the instance of SQL Server 2005 to populate the Subscription.
   repl.Synchronize();
   MessageBox.Show("Data is Syncronized");
}

catch (SqlCeException ex)
{
// Use your own error handling routine to show error information.
MessageBox.Show(ex.Message);
}

finally
{
// Dispose of the Replication object.
repl.Dispose();
}
}

*** Change the [xxxxxx] to whatever the names are for you ****

Use the above code in your PDA app to synchronize to the publication. Change the InternetURL to be whatever the IIS name is (usually computer name) and the name of the virtual dir alias you made in step 4.

Login and Password are self explanatory. Subscriber conn str is where the database will be synced to.

TROUBLE SHOOTING

There are a number of errors that could occur.

Open the location of the IIS virtual dir in your web browser – it should say “Sql Server Agent 3.0”. If it doesn’t then the dll hasn’t been registered properly. Try re registering using regsvr32.

If there is a reconciling error, make sure all the usernames and passwords are correct and the snapshot is going into the folder that the IIS alias points too. Look at the Replication Monitor for error information. Usually you can work through the errors from there.

Monday, April 03, 2006

If I ruled the world

I am working for "the man" at the moment. I was a contractor for 3 years before that. It was hard fitting into someone else's way of doing things for a start, but I have found a routine that works.

The biggest problem for me is that I am the "IT Guy" at work. Everyone else does something else, so of course if there is any computer or technical issue I get the call. It doesn't really bother me, but I am hired as a developer first and foremost, and when you are working something through in your head, being interrupted by some insignificant problem in Excel can be annoying.

The other problem is I am lumped in with the admin staff in an open plan office. I have always worked in my own office throughout my professional programming career. I think it is good to have interaction with others, but it is also important to have a quiet place to go. Most people realise that a shut door means do not disturb. You just can't do that in an open plan office.

Anyway, this got me thinking, what makes a good office environment? One day I want to run my own company with employees (minions) to do my bidding. Here are the golden rules that would apply for dev's in my company:



  • Developers to get their own office, or place they can call their own if they need a quiet moment.

  • Working on Friday afternoons will be optional - I mean how much gets done on a Friday arvo anyway?

  • Once a week dev team meetings

  • All dev leads to talk to their devs on a one to one basis every day to discuss issues and other ideas. The quieter members of a team don't always get their ideas across at team meetings - usually they would be more comfortable tabling things on a one to one basis

  • Dev's could work from home for at least 50% of the week, if and only if it suits their team

  • No 8 hour day / 40 hour week.
    Not that anyone in the IT world does a 40 hour week, but it's non sensical to me to set an arbitrary amount of hours that someone is required to do per day or week. People in my team will, at their Monday morning team meetings, set the work they expect to achieve for the week. Once that is done, they may go. Obviously the work would have to be sensible and signed off by a team lead.

  • Flexi time.
    Some people are morning people, some people prefer to code in the middle of the night. My dev's will decide themselves when they want to come in.

  • Don't feel like it, Don't
    It sort of fits with the above point, but I have had days when I wake up and just don't feel inspired to code. I may be tired or need a break - whatever the reason, I am just not going to get any useful coding done that day. As an employer I would rather that if employees are having days like that, they don't bother coming in.


All of the above may sound like a bit of a fantasy, and I'm sure there would need to be a few kinks ironed out. The main problem would be if a team member needed to talk to another team member and they weren't available. Having said that, with instant communication available almost anywhere on the planet, that shouldn't be a problem.

Hopefully, I will get a chance to put my ideal world into practice.

Friday, March 24, 2006

Open Source will takeover say Open Source evangelist

In this article it is reported by Apache head Greg Stein that there will be no Commercial software in the future.

Apparently, according to Stein, people will make money in the software industry by selling support, installation, configuration and maintenance.

Bollocks, I say. Does he truly believe that the literally millions of professional developers are going to work for free, and hope they can make a living out selling support?

It may be true in the future where companies may give away a base software package and charge for customisation and support, but it would more than likely be closed source. In this case why would you give away your source to a competitor, when all you are charging for is your time. They could undercut you, using your source.

The other thing that doesn't make sense to me as a developer with his model. I can see how you could make money customising an Open Source application for a client's needs. I for one wouldn't enjoy doing that. It's horrible working with other people's code, no matter how good it is.

Call me old fashioned and unenlightening, and this may come back to haunt me in the future, but I don't see a time in my professional life span where there will be no Commercial software houses.
I come from a small marketplace, which may be leading my thinking. You have to work bloody hard to get and keep clients. You do all you can to lock them into using your software. Making the source of that software freely available to all and sundry just wouldn't happen.

So, I think there will always be a place for commercial software.

However, I can see the value of using OSS and customising it for the customers needs. This would be the most likely way of making money - whether most developers would like to take someone elses code and build on it is the question.

I suspect most would not.

Thursday, March 23, 2006

Hobby Games Programmers

I couldn't agree more with this.
As I have noted before, I started programming on an Amstrad in the 80's when I was a kid.

Programming in those days meant making a crude game. The article above makes a good point, "But, sadly, current versions of Windows have no immediately accessible programming languages. And what’s a kid going to do with Visual Basic? Build a modal dialog?".

I have never really thought about this before. What do youngsters do today to get started? I know they *could* download C# or VBExpress for free and download DirectX SDK for free, but its not by any means easy - even for a professional developer. I can't imagine a young programmer being that interested in learning programming by making a Windows App.

I guess they could get into making Web Apps in ASP.NET or php etc and I would think that would be something I would do if I were 15 years younger and starting out.

Even then things ain't as easy as they were 15-20 years ago. In that respect it seems things have taken a backward step?

Tuesday, March 21, 2006

Computer History and Free Video?

I am currently watching a series I, erm acquired off the net by Robert Cringely called Triumph of the Nerds. It basically traces the history of personal computing from the Altair through to 1996 when the series was made.

It comes down to Bill Gates vs Steve Jobs really, but there are a swag of personalities that shaped the PC industry we know today. It is a great series that any geek should watch.

If this ever gets back to Mr Cringely (hey you never know) - maybe you should make the series available as a paid download on your site? I have been also trying to get hold of Nerds 2.0.1 which chronicles the early Internet to no avail.

It would be cool if stuff like this that is a few years old and past it's commercial run, could be freely or at least available to download off the net. I think Cringely has this vision with NerdTV which is, if you dont know, a series avaliable via creative commons license. It's a great series and I download it as soon as it is available. It was supposed to be a weekly thing, but recently they have been a few weeks between episodes.

UPDATE:
It appears Triumph of the Ners is still available to purchase
Here

I would recommend it to anyone, and I will be buying it. Anyway, I think my point is still valid.

Wednesday, March 08, 2006

F1 Season starts Sunday

Woo hoo. New F1 Season starts back this weekend. Last year was really boring. This year looks to be better with new teams, drivers and rules.

Rule changes of note:
Drivers can change tyres during the race again - upto 7 sets per week end
Choice of V8 or low capacity V10
1 Hour Qualifying back

Bit of a prancing horse fan myself, so hopefully they can improve from last years shocker.

BTW anyone interested I have a picks game at my site.

Free to join and should be introducing features over the next few weeks, including the ability to run a sub league for your friends. Stay tuned.

Comments etc to info@softwarex.co.nz

Cheers.

Friday, March 03, 2006

Programming: ramblings of a self taught man.

I have been a computer programmer (I prefer the term software developer for some reason) since I saw my first computer 22 odd years ago. I started off hacking away in BASIC on my brothers Amstrad CPC 464. In those days computer magazines were filled with BASIC programs you could type in to your computer. The programs - usually games - were often rubbish but the fun was learning programming and trying to figure out what was going on with the code.

I have been hooked ever since. I lived in a small town about as far away from Silicon Valley as you could get, however I always felt connected with the early computer era somehow. There was no Internet (well public Internet anyway) so most information was passed on word of mouth through friends, or through magazines, or more often than not through trial and error.

I moved on from BASIC on the Amstrad to Turbo Pascal on a 386 PC. Again mostly hacking away, learning by trial and error. The great improvement of course was the fact that the TP program would compile to an executable and could be used on any IBM Compatible in the world. This seemed like grandious stuff to a 14 year old from small town New Zealand.

Along the way I picked up Delphi and a whole host of other languages through to C# which I predominately use today. I did a 2 year tertiary course in Business Computing at a local Polytech to get a certificate, but I am extensibly self taught.

I have about 10 years commercial experience, but no formal - read university - training in computer programming.

Has it effected me in my career? No, definately not.

Would a University graduate know more about crafting a computer application from start to finish than me? No, definately not.

So why is this? Why am I so arrogant to assume that I, a self taught developer, could be as good or better at developing than someone with formal training?

That's fairly easy to answer really. Evolution of skills. Software Development is an ever evolving discipline. To be a succesful developer you must stay up to date with modern technologies and take the time to learn new things almost on a weekly basis.

The other thing a University education can't teach you is experience. By the time the graduate left University, I had 3 or 4 years actual work experience under my belt. The sort of real world experience that is, IMHO, worth any University degree.


Thursday, March 02, 2006

PC World(NZ) won't be getting my subscription

My subscription to PC World has just expired and I won't be renewing.

I have been buying this magazine either off the shelve or through subscription since the late 80's. I know this because I still have most of them.

It was a great magazine in those early days. Genuinely funny with good articles and reviews that were useful. It was more a magazine for the enthusiast in those days.

Now it appears to be aimed at entry level computer users. Just about every month there is some boring round up about Multi Function centers or "tips" to get the most out of Windows. I mean it's stuff that anyone who can actually used a computer would know inherently.

The one saving grace is Juha Saarinen. His articles still have some technical content - albient not as propeller head as they used to be.

So what has happened? Have I out grown the magazine or have they sold out to the Lowest Common Denominator? Probably a little out of column A, a little of out Column B.

Either way they are getting my 3 fingered salute.

Infopath 2003 - not what it could be

I'll start off by saying this: I like Infopath - well I want to like it.

It is VERY much a v1.0 program. Hopefully, Microsoft will continue to develop it further in the next few iterations.

The VSTO 2005 tools are a good start - this allows you to create managed code behind rather than ugly JavaScript. My issue is that it is really hard to do anything productive. I don't speak XPath at the moment, so it's really down to trial and error to figure out what to do.

Case in point, I was trying to autoincrement field in a repeating table. I did my usual things - googled, google groups, documentation - nothing found a solution. I tried quite a few things from Google groups, most didn't work at all and some would sort of work.

Anyway, after half a day of trial and error and reading the docs, it appears that I can use an expression field and have its default value set to position(). Thats great but it shouldn't take half a day to work out. I mean this is a fairly standard thing to want to do.

Hopefully in Office 12 Infopath will be improved. As I said before I think it has the potential to be huge - in our company for example, there are literally hundreds of documents someone has made as read-only Word templates available on the intranet, but these need to be printed out and filled in by hand. Obvious job for Infopath, however at current state it would be a big job to convert.

I might wait for the next version before I recommend that upgrade.....

Tuesday, February 14, 2006

Mono Develop and Linux

I installed Gentoo Linux over the weekend.

I seem to do this about once a year. I will use Linux for a while and then shelve it, then usually delete the partition to install something else I want to play with at the time - the latest Vista CTP at the moment.

I really *want* to like Linux, but there are some apps I really can't do without, so usually go back to Windows. One of them of course is Visual Studio 2005.

I thought I'd try Mono Develop again. I haven't used MonoDevelop since about 0.5 build. I must say it has improved markedly since then. Now at 0.91 it is getting polished.

The only problem I have with Mono is that while most of the libraries are cross compatible with the Windows equivalent, you can't build cross platform WinForms apps. This is to do with problems the getting GTK# to work under Windows apparently. This is a shame really. It would be fantastic if you could create an app in Windows or Linux and have it work on the other.

With that disappointment out of the way, it must be said that MonoDevelop is one of the better - if not the best - IDE's for Linux. If you're developing for Linux, you could do a whole lot worse than MonoDevelop and C#.

Monday, February 13, 2006

Great Site for Free Web Templates

I stumbled across this site.

It features freely downloadable, standards compliant, web templates. There are some really nice designs on there.

I find - as a developer first and foremost - that I sometimes struggle to come up with a clean fresh design when creating a website, so I think these templates will come in handy.

I'm forever impressed by the amount of time and energy some people spend to create freely available products. I'm trying to give a little back myself - I am endevouring to put up a series of utilities I have written for my own use on my website as freeware. Not much there at the moment but hopefully the list will grow.

Thursday, February 09, 2006

MS Ergo 4000 Keyboard




Someone on the NZ .NET user group recommended these.

I get a bit of soreness in my wrists by the end of the day, so I thought I'd give it a go. Work was paying so no biggie if I didn't like it ;-)

After a couple of days use, I must say I like it a lot. It takes a bit of getting used to - I find myself hitting the backspace key a little more than usual because keys aren't quite were I am used to them being, but I think over time I will get used to this.

My wrist's are definately better come the end of the day, so I would have to give this keyboard two thumbs up.

Borland to sell of IDE tools - including Delphi, JBuilder

Link

It will be the end of an era for me when Borland sells off it's core IDE line. I have been a user of Borland products since the late 80's. I learnt to program using Turbo Pascal 5.5 and Turbo C/C++ 1.0. These were great products and were well ahead of their competition of the day.

Infact Borland were THE dev tools company. The introduction of Delphi in 1995 only confirmed this. I was in awe of Delphi 1.0 it really was an amazing product. I have used Delphi ever since.

I don't think the brass at Borland really knew what they had in the early 90's. They changed their name to Inprise trying to corner the enterprise market, and they even put out an Office competitor. In reality they were a tools company.

As a Delphi developer in the last few years I have been a little disappointed with Borland. I can only assume how C++ Builders feel. Delphi 8 was truely bad, 2005 although being good had a lot of problems,and I haven't even bothered with 2006 to this point.

So, is the selling of Borland's IDE line up a good or bad thing?
It's hard to say at this point, but I have a feeling it can only be positive. Hopefully the buyer will find the passion that Borland had in the early years. As long time Delphi, CBuilder, JBuilder users we deserve it.

Friday, February 03, 2006

IE 7 Beta 2 - initial impressions

I have been using IE 7 for a while now. I used beta 1 and now am using beta 2.

I like the new look of beta 2, but some of the icons aren't that obvious. You have to go searching to find the refresh and stop buttons. Favourties are not obvious either.

Hopefully some more thought will be put into this before the finished version.

Tabbed browsing is great, although has been around a while in Firefox, Opera and others.

One thing they I think haven't got right in IE 7 that Opera does well:
links that open a new window open to a new tab in Opera, in IE 7 it still opens to a new window.

Other than that it looks like a good step forward for IE.

Anders Interview - good watch

I just watched the "Behind the Code" interview with Anders Hejlsberg.

I really like this guy. I have seen a few videos with him and they are always informative and make you think.

For those who don't know, Anders wrote the original Pascal Compiler which became Turbo Pascal, he was Chief Architect on Delphi at Borland, and then moved to MS. There he worked on WFC for Java and then as Chief Architect of the C# language.

I program in Delphi and C# and you can feel the hand Anders played in both.