Saturday, 6 December 2008

Repair VS 2008 SP1 install

I got fuddled up with my Visual Studio 2008 SP1 update. It just did not happen correctlly. Some bits were missing, like the new Entity Data Model template. After waiting for soooo long, it arrives. Then it doesnt install. mmm. Pain.

I know people who just hate LINQ-to-SQL (as if it was my idea), but I do like it. It works. And it makes a well prepared way for a perhaps good successor, if it installs!!

So I found the fix. After you complete the install, run your VS Command prompt. and type
devenv /setup
then wait.

see http://msdn.microsoft.com/en-us/library/ex6a2fad(VS.80).aspx

The open VS, create a new class library, select add new item and there it is. New toy or your future bread n butter. Thats for you to find out. :)

Friday, 4 April 2008

Reporting Services Export formats - ASCII CSV and more


It seem Reporting Services is quite extensible. After much discussion around how we can provide a decent way to post-process a CSV file generated by an RS report, we found that we can add endless export formats (scary!) to a report.
Typically, out-of-the-box we have a few, namely CSV (unicode), PDF, etc. So we needed CSV in ASCII, with no headers. Umm! stumped for a bit, then the general problem-solver goes into motion and we come up with standard ideas of how and what more. But wait! There is simple answer there.



  1. Open your C:\Program Files\Microsoft SQL Server\\Reporting Services\ReportServer\rsreportserver.config

  2. Scroll down to <Render> section and you will see -
     <Render>
    <Extension Name="XML" Type="Microsoft.ReportingServices.Rendering.XmlDataRenderer.XmlDataReport,Microsoft.ReportingServices.XmlRendering"/>
    <Extension Name="NULL" Type="Microsoft.ReportingServices.Rendering.NullRenderer.NullReport,Microsoft.ReportingServices.NullRendering" Visible="false"/>
    <Extension Name="CSV" Type="Microsoft.ReportingServices.Rendering.CsvRenderer.CsvReport,Microsoft.ReportingServices.CsvRendering"/>
    <Extension Name="IMAGE" Type="Microsoft.ReportingServices.Rendering.ImageRenderer.ImageReport,Microsoft.ReportingServices.ImageRendering"/>
    <Extension Name="PDF" Type="Microsoft.ReportingServices.Rendering.ImageRenderer.PdfReport,Microsoft.ReportingServices.ImageRendering"/>
    <Extension Name="RGDI" Type="Microsoft.ReportingServices.Rendering.ImageRenderer.RemoteGdiReport,Microsoft.ReportingServices.ImageRendering" Visible="false" LogAllExecutionRequests="false"/>
    <Extension Name="HTML4.0" Type="Microsoft.ReportingServices.Rendering.HtmlRenderer.Html40RenderingExtension,Microsoft.ReportingServices.HtmlRendering" Visible="false" LogAllExecutionRequests="false"/>
    <Extension Name="HTML3.2" Type="Microsoft.ReportingServices.Rendering.HtmlRenderer.Html32RenderingExtension,Microsoft.ReportingServices.HtmlRendering" Visible="false"/>
    <Extension Name="MHTML" Type="Microsoft.ReportingServices.Rendering.HtmlRenderer.MHtmlRenderingExtension,Microsoft.ReportingServices.HtmlRendering"/>
    <Extension Name="EXCEL" Type="Microsoft.ReportingServices.Rendering.ExcelRenderer.ExcelRenderer,Microsoft.ReportingServices.ExcelRendering"/>
    </Render>

  3. That's where the 'pluggability' is at. Each extension has a Renderer type. For simple stuff, like mine, just copy the CSV element and paste it back in. Rename the Name attribute to "CSV2".

  4. Add overrides for the name that is displayed in the report dropdown menu - see CSV(ASCII)
  5. And add DeviceInformationSettings in xml - the whole thing should look like..
    <Extension
    Name="CSV2" Type="Microsoft.ReportingServices.Rendering.CsvRenderer.CsvReport,Microsoft.ReportingServices.CsvRendering>
    <OverrideNames>
    <Name Language="en-UK">CSV(ASCII)</Name>
    </OverrideNames>
    <Configuration>
    <DeviceInfo>
    <Encoding>ASCII</Encoding>
    </DeviceInfo>
    </Configuration>
    </Extension>
  6. Save it back (hope you got a backup copy of the config just in case)
  7. Go to IIS (Control Panels/Admin..Tools/Internet Inf...), find ReportServer under Application Pools and recycle the pool ( so that the next report picks up the new changes
  8. Done
If you need to write some funkier renderers, then consult MSDN. They have a standard api for it now.


Thursday, 1 November 2007

Solve the problem don't create a solution

Problems are strange relatives. They turn up uninvited yet we know that some time or another they will turn up, invited or otherwise. No matter what we do, we can never truly prepare for their arrival, so it's best to deal with them when they turn up (with much courtesy if they are a difficult lot). Luckily for me, it's mostly good as we learn things when we get surprised.

But sometimes, they are a pain. Formalities, sensitivities and the bus load of other past life dramas. If you do decide to lend them a hand (thats more than a ear) you must be prepared to stand by that as you now become part of their system of problems. (see Systemantics)

Everyday or almost every day, we developers (designers, architects if so!), have problems to solve in our systems. We imagine how could we (or they) have designed it better. Often we build a new solution (see hand above) to replace the problem. That's good, but now we know we have promoted the problem (into a solution) so it will come back with more problems. Just be ready for them. Or if we could see a simpler way to solve the problem then do only that and let the problem remain a problem till reaches a point where a real solution is required to fix it and you know you are ready for the slew of new problems that will come with that system. No I am not lazy, I am just old enough to want to live the rest of my life. :)

Hopefully, our work problems vanish when they are solved. On the other hand, the problems or solutions of family and friends mostly only keep coming back.. with a hug ;)

Monday, 26 February 2007

Writing Use Cases

This is an article about writing use cases. Too many people have asked me for a set of rules to work with when dealing use cases. I am so tired of repeating myself that I decided this is the best way forward. For everyone, but mostly for me! As systems differ, so do the rules. As more BAs use them and provide me feedback, we can standardise what is in here.

>> link to document

Tuesday, 7 September 2004

Testing 1-2-3

Hi all.

Just clearing my throat... been feeling to publish so many ideas for so long now but have never found the time. All ideas big and small are worthless without a fair comment. So please comment liberally and honestly.

:) Thanks
Ken