Ryan on October 22nd, 2009

Microsoft have possibly the most comprehensive and generous partner program of any technology company. Unfortunately, just like Microsoft its self and any large organisation the program has become so big and so complex that its overwhelming.

Empower or Bizspark? Action Pack or Certified? Which specialisation – ISV,Small Buisness, Custom Development . How to get points? What bout the bonus points? which points categories are exclusive? etc. etc. etc.

The partner program site has long been regarded (even by Microsofties) as a a little impenetrable – but today something happened that had me banging my head in disbelief. I am not going trying to scrore cheap points by bashing Microsoft here – after all its just like any company, they do some things well, and some things badly. I am just venting with a little bit of hope that someone in Microsoft will read this who knows who to contact that can get someone to get permission to someone else to authorize somebody to make a small change…

So the story :-

To get to the Certified Partner level the most appropriate path for an ISV is the “ISV/Software Solutions Competency” – marvellously straight forward so far and a handy guide to boot!

Part of that process is to get your software certified. There are different options but the most appropriate for many is the “Platform” Tests for ISV/Software Solutions and Hosted Solutions Competencies. In my case the two relevant parts of this test are Windows Server Component & Managed Code.

Now keep with me here – the “Windows Server Component” test is actually the “Works with Windows 2008″ test.

So you think that passing this you can use the nice “Works with Winodows 2008″  logos, right? Well no.

Now the Platform Test for ISV doesn’t automatically let you use the logos, its a separate process for that.

“ISVs that select the Windows Server foundation component of the Platform Test for ISVs and pass without any waivers, are eligible to participate in the Works With Windows Server Logo program and receive the “Works With Windows Server Logo”

So you have to submit it twice, a bit daft but no biggie. (I defy anyone without prior knowledge to figure this lot out first visit.. or maybe I am dumb?)

The process for the “Works With Windows Test” is itself actually very well done – you load the testing tool on a server, it verifies all sorts of requirements such as UAC enabled and looks for many common problems in MSI files. You install your software, run it and then unintstall it. It then verifies you’ve not borked anything on the OS and cleaned up after yourself. All the things that customers worry about. Finally it creates a submission package to send to Veritest or Wipro for further tests and validation. All in all pretty neat and the testing is much more comprehensive than previous versions of the Works With program.

So here’s the rub though

A) For “Windows Server Component” part of the ISV Platform test you set test Windows 2008 system and test your app. Run the test and submit for verification. (At least until Dec 31st 2009)

B) For “Works With Windows” test you must after July 15th use Windows 2008 R2 RC and repeat the exact same test as A and submit again for verification.

Yup that’s right – during the strage period of July 15th to Dec 31st 2009 you have to do EXACTLY the same test on two different operating system for absolutely no reason I could fathom. Why can’t the changeover dates between 2008 and 2008 R2 be the same for both testing programs?

Confusing? Yes. Totally unnecessary? As far as I can tell. Frustrating? Oh yes!

P.S. Thanks for Julia, Padraig and Yu at Veritest and Paul on Microsoft’s Windows Server Logo Program team for your help and putting up with my whining.

Bookmark and Share
Ryan on September 27th, 2009

I’ve been using WordPress for a little while and whilst its generally very good at what it does I do get frustrated by limitations in the editor.

The two things I miss the most are being able use tables and to set styles such a “Quotation”, “Note Callout” in the same way that you do in something like Microsoft Word so you can keep the look consistent across the whole blog.

(Note you should use existing markup like Paragraph, Heading 1…2..3, Quote etc when suitable as it helps with SEO)

Choosing a style in Microsoft Word

Choosing a style in Microsoft Word

This is all quite easy to do using CSS and classes – but you have to start editing the HTML manually and I want to make it easy for non-technical users when editing a post.

TIP – Keep your sanity and NEVER paste documents from Word into Wordpress (even using the Paste from Word cleaning tools) . If you look at the HTML generated it will be full of useless cruft that will make trying to apply a consistent look a nightmare.

The editor WordPress uses is called TinyMCE, but it hides some features from view for simplicity. You can use other editors such as CKEditor (see FCKEditor wordpress plugin) but for this article I am going to use the Tiny MCE Advanced plugin to allow you to use the full feaures of the TinyMCE editor.

The rest of this post will walk through installing the TinyMCE Advanced plugin so if you are fimiliar with this then feel free to skip to Better Formatting with Wordpress Part II where I will cover how to setup your own styles and give some examples that you can use.

Installing the TinyMCE Advanced plugin to your WordPress blog

Note this is for WordPress v2.8, other versions may be a little different

  • Plugins > Add New
  • Serach for TinyMCE Advanced
  • Click Install (right had side)
  • Then confirm with Install Now
  • Click Activate Plugin
plugins-add-new
Now choose which extra features we want in the editor by selecting Settings > TinyMCE AdvancedYou can add controls you want by dragging them to the menu bars and remove ones you won’t need. Its tempting to add everything, but you probably won’t need a lot of these and it will just make it harder to find the important stuff.

Buttons I removed

  • Smilies (come on this is a blog not an IM session!)
  • Undo and Redo (I tend to always use the hotkeys)
  • More Tag & Split Page – this is not a printed page, if a user wants to see more they scroll down.
  • Style (This lets users edit CSS inline styles – the whole point of putting this editor in place was to sop this happening and keep a consistent look)
  • XHTML Attributes – if you get to the stage of needing this (e.g. adding click events) then most people will be better of in the HTML view.
  • Insert Image (we’ve got WordPress’s Add An Image button for that)
  • Superscript and Subscript
  • Print - this is the 21st century, give the trees a break already!

unwanted-buttons

settings-tinymce-advanced

Buttons I added

  • Visual Aid
  • Table Tools
  • Styles
  • Quote

new-buttons

One final note – don’t select Import the current theme CSS classes in the CSS classes in most themes are not designed to be used for your editing. Doing so will just fill up the Styles dropdown with lots of useless entries.

import-css-from-themeDon’t select this option!

Now onto Better Formatting with Wordpress Part II where we learn how to define our own styles and go through some examples.

Bookmark and Share

Tags:

Ryan on May 21st, 2009

I’ve been using Rimu Hosting for about 6 months now to host various applications (SVN/Helpspot and others) and am very very impressed so far. True they are not the cheapest out there and don’t offer ‘unlimited’ bandwidth (which is the classic marketing lie anyway) but they do give a solid, reliable service. You get what you pay for.

The real ace up their sleeve though is quite revolutionary – they actually employ people that know what they are doing. I mean really know what they are doing.

I’ve contacted them twice with questions (both non-urgent and my own setup problems as I am not a linux guy) and it was sorted out with one email in minutes, literally. Better yet the reply were helpful; detailed, contained helpful links and talked me through what they had done to troubleshoot, find and correct the problem – I really learnt something.

To reiterate, these were not problems with the service they provide, they were down to my lack of Linux/Apache knowledge – they would have been well within their rights to say that it was outside the scope of their support or charge me extra.

The fact that I was astound by this level of support says nearly as much about some of the poor hosting companies out there as it does about Rimu.

Full disclaimer – if you click on this link I get a $15 referral discount, but if you click on this one I don’t.

Bookmark and Share
Ryan on January 7th, 2009

ILMerge is an invaluable tool from Michael Barnett at Microsoft Research that can merge multiple assemblies together into a single assembly.

ILMerge can output .NET 2.0 or .NET 1.1 assemblies by using the /targetplatform:v1.1 switch.

At the time of writing v2.8.0626 (26th June 08) has a little problem when targeting .NET 1.1 and running on 64bit Vista.

In the log files you see this when running on x86

Set platform to 'v1.1', using directory
'C:\Windows\Microsoft.NET\Framework\v2.0.50727\..\v1.1.4322' for mscorlib.dll

But on x64

Set platform to 'v1.1', using directory
'C:\Windows\Microsoft.NET\Framework64\v2.0.50727\..\v1.1.4322'
for mscorlib.dll

But there is no such dir – .NET 1.1 is only 32bit (though obviously it runs on x64 systems) and the correct dir is

C:\Windows\Microsoft.NET\Framework\v1.1.4322

As a result you will see the following in the log file.

AssemblyResolver: Assembly 'System.Web' is referencing assembly 'System'.
AssemblyResolver: Attempting referencing assembly's directory.
AssemblyResolver: Did not find assembly in referencing assembly's directory.
AssemblyResolver: Attempting input directory.
AssemblyResolver: Did not find assembly in input directory.
AssemblyResolver: Attempting user-supplied directories.
AssemblyResolver: Did not find assembly in user-supplied directories.
....
Could not resolve type reference: [mscorlib]System.Enum.
Could not resolve type reference: [mscorlib]System.ValueType.
Could not resolve type reference: [mscorlib]System.Object.
Could not resolve type reference: [mscorlib]System.IDisposable.
....
(Missed out a few hundred lines referencing all other mscorlib etc namespaces)
ILMerge: Done.

And although it reports done and does not return an error code you will get assembly loading errors.
Workaround

Add a symlink (a sort of low level shortcut) directing ILMerge to the correct directory.

MKLINK /D C:\Windows\Microsoft.NET\Framework64\v1.1.4322
C:\Windows\Microsoft.NET\Framework\v1.1.4322
Bookmark and Share

Tags: ,

Ryan on November 18th, 2008

This seems to come up time and time again and can leave people hairless. I haven’t found a good, simple walkthrough – so I thought I would put together a quick post.

Disclaimer : This post is written from the perspective of a developer setting up a dev/test system. For production purposes you need to thoroughly understand the security implications of all the setting listed below. But you knew that already.

Back in the good ol days you never had any trouble getting apps connecting to SQL Sever. Username “sa” and a blank password and you were good to go ;) Things are a bit more difficult now…

This particular example walks through installing Windows SharePoint Services on one server (a virtual server, but it makes no difference) connecting to a SQL Server 2008 Express database Instance on another server.

Both servers are using the same domain. This kb 932376 should help if you are running SharePoint and a Database on servers in different domains or no domain at all.

Firstly, install SQL Server on its own instance (lets assume the machine is called SQL2008EXP and the instance is called SharePoint). There’s a whole big process here that involves what is possibly the worlds most complex installer that inexplicably leaves you manually hunting for all the pre-requisites (Windows Installer 4.5, NET 3.5 SP1, Powershell – but that’s all out of the scope of this post). Seriously Microsofties, you have outdone yourselves with this installer!

Grumbling aside – setup a Domain Account (A) that the SharePoint services will use. As usual for service account make it ‘password never expires’ and uncheck ‘user must change password on first login’.

Start Microsoft SQL Server Management Studio and go to Security > Logins, right click and select New Login. Enter your DOMAIN\UserName (A) that you created above. Select Server Roles and check dbcreator and securityadmin.


Install WSSv3 (SP1 or above) – select Advanced and then “Web Front End” as we want to use SQL Server not MSDE.

SharePoint - select Advanced Install SharePoint - select Web Farm Front End

The SharePoint Products and Technologies Configuration Wizard should start automatically

Select “No, I want to create a new server farm”

Create a new server farm

Fill in the account details that you setup earlier (A)

Configuration Database Settings

Get the follwoing error

Failed to connect to the database server or the database name does not exist.
Ensure the database server exists, is a Sql server, and that you have the appropriate permissions to access the database server.

Now its time to waste 2 hours of your life pinging servers, checking names, passwords, permissions and event logs. Or feel free to skip this step and carry on below :-

SQL 2008 installs in a state that will stop you connecting from a remote server.

This is not done out of badness, but for security.

Start SQL Server Configuration Manager

Expand the SQL Server Network Configuration node and find the Protocols for your Instance

Right click on TCP/IP and click Enabled - do the same with Named Pipes

Enable TCP/IP and Named Pipes

Right click on TCP/IP and click Properties. Select the IP Address tab and make a note (B) of the TCP Dynamic Port

Restart the SQL server service

When you connect to a SQL Server instance via TCP/IP the connection attempt will query the SQL Server Browser service (on port 1434) and find out which port a specific instance is set to listen on. However by default the SQL Server Browser service is disabled. You can now either start it or use the Port number (B) you found earlier to connect directly.

Confusingly the syntax is different to what you may expect – no semi-colons here, use a comma

ServerName\InstanceName,PORT

(If you are using a default instance then the connection will happen on port 1433 by default and you won’t have to enter the port number or worry about the SQL Browser service)

If you have a firewall running you will also have to open up this port number for incoming TCP connections. See Windows Firewall or the Firewall guide for SQL Server 2005

Further reading SQL Server 2005 Remove Connectivity Issue Troubleshooting (most steps applicable to 2008)

Bookmark and Share

Tags: , ,

Ryan on November 5th, 2008

For many applications (especially server based applications) its essential to provide some sort of logging for support and troubleshooting.

While logging to Windows Event logs is a good idea if you need to get an administrators attention its not really suitable for detailed logging, and if you have a problem you need to have already been collecting details … lots of them.

There has to be as many different logging schemes as there are programmers. A quick search gives you Microsoft’s Logging Application Block, Apache Log4Net, NLog and Google App Engine Logging – and that’s just for starters. You may even think it would be trivial to roll your own? (You would be wrong of course, developers always underestimate things like this).

But all of these options are lacking in one vital part – what do you do with your logs when you have them? Most require you to fire up your text editor and start jumping around a 10MB text file! Give me a break, my sanity is hanging by a thread as it is ;)

I use Gurock Software’s SmartInspect in some of my software (Email reminders and alerts for SharePoint).

The logging library is very good – fast, feature rich, lots of transport options, easy to use and extremely well documented.  But where it stands head and shoulders above everything else is the log viewer.

It’s blindingly fast, easy to use, clear and has all manner of time saving features – easy navigation, graphs, filters, colours and much more. Yes the software is a few hundred dollars but will more than pay for itself in time savings the very first time you use it in anger.

Take a look – no connection other than a satisfied customer.

P.S. If you are in the software business and want to know how your product can compete with FOSS alternatives then I think Gurock make an excellent case study.

Bookmark and Share

Tags: , ,

Ryan on October 26th, 2008

Jason over at Expat Software has written about how much friction is involved in signing up for StackOverflow because of their choice to use OpenID.

Compared to the zero friction process required to sign up to use his Twiddla service (just click new meeting) StackOverflow comes in at a frustrating 14 steps or so.

And he’s right of course, you want as close as zero friction to use your site as possible and despite being a certified ‘good idea’ OpenID is too just too complex a procedure for the average Joe to bother with.

However, in the case of StackOverlow the determining factor for its success or failure is going to be its ability to keep the signal to noise ratio high and one way of doing this might just be to make the barrier to entry a little higher that it could be and help encourage the unwashed masses to bugger off back to YouTube to spew drivel.

I don’t know if this was a deliberate decision or not – indeed in the StackOverflow podcasts you get an indication of the disagreements between Joel, Jeff and other team members about the use of OpenID – but they do recognise that some barrier to entry could be a good thing for their site.

Me – I’ve got high hopes for the StupidFilter project – OMG, LoL !!!!!

Bookmark and Share