July 2008 - Posts

It's been quite some time since I last used Continuous Integration servers and components, including reference (API/SDK like) documentation tools.

But today at work, while fixing some warnings about incorrectly formed code comments ("///" in C# or "'''" in VB.NET), I asked my project manager what tool they were using actually to generate the documentation. and they weren't using anything :P

So my next step was making him a small demo of Sandcastle, the best documentation tool I've seen (I come from the now extinct NDoc).

When Sandcastle was released publicly it had no visual GUIs, but now I'm amazed how mature they've become. I've chosen Sandcastle Help File Builder as the GUI, because it is identical to the old NDoc's interface.

To create the XMLs needed to build the documentation, just activate the "XML Documentation File" in the Build tab of your project's properties and re-compile it.

Add the XMLs to the Sandcastle help project (it will add the assemblies too, because it uses Reflection to obtain code, hierachy and other data), configure the project properties (name, file name, presentation style, if you want to generate documentation for private methods,...) and compile.

Here are the results of creating the documentation for a small project I did years ago:

I've uploaded the generated CHM help file here if you want to check it.

Note: Other two promising extensions I've not yet tested are Sandcastle Styles and Sandcastle Extensions. Feel free to drop a comment if you've tried it telling what you think about them :)

 

Firefox and Internet Explorer 7 use search providers based on the OpenSearch 1.1 specification. This means that anyone can develop their custom providers and add them to their browsers.

So, I've learned a bit of how to create them and created one of each to "connect" with the blog community search page (so you can search all blog posts for specific info).

Firefox

Starting with Firefox, info about creating custom search engines can be found in this page.

Here is the markup code for our custom Kartones.Net search provider (notice the [SOMEDATAHERE] tag, it is to avoid placing base64 binary image data in the post).

<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
<ShortName>Kartones.Net</ShortName>
<Description>Kartones.Net Community Search</Description>
<InputEncoding>UTF-8</InputEncoding>
<Image width="16" height="16">data:image/gif;base64,[SOMEDATAHERE]</Image>
<Url type="text/html" method="GET" template="http://kartones.net/search/SearchResults.aspx">
 
<Param name="q" value="{searchTerms}"/>
</
Url>

<SearchForm>http://kartones.net/search/SearchResults.aspx</SearchForm>
</SearchPlugin>

Basically, we setup:

  • A short name (<ShortName>)
  • A description (<Description>)
  • The input encoding, usually UTF-8 (<InputEncoding>)
  • An image (<Image>, can be converted to base-64 here)
  • The URL that performs the search (<Url>) and its parameters (<Param>, our typed search will be in the {searchTerms} value)
  • A reference to the search form page (<SearchForm>)

As you might have noticed, it simply creates a querystring similar to the ones the webpage creates (example: http://kartones.net/search/SearchResults.aspx?q=RPG), and create info (image, name, description...).

Here is a screenshot of the added search engine:

Internet Explorer 7

Creating a IE7 provider is very simple too. Microsoft has a MSDN page that explains quite simply the process.

First the markup code:

<?xml version="1.0" encoding="UTF-8" ?> 
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">

 
<ShortName>Kartones.Net</ShortName> 
 
<Description>Kartones.Net Search Engine</Description>
 
 
<Tags>Kartones Blog Blogs Community Development .NET C# Java ASP.NET Hardware</Tags>

 
<Contact>admin@kartones.net</Contact>
 
<Image height="16" width="16" type="image/x-icon">http://kartones.net/favicon.ico</Image>
 
<Developer>Kartones</Developer>
 
<InputEncoding>UTF-8</InputEncoding> 
 
<Url type="text/html" template="http://kartones.net/search/SearchResults.aspx?q={searchTerms}" 
/>
</
OpenSearchDescription>

Once again, we have to setup some info:

  • Short name (<ShortName>)
  • Description (<Description>)
  • Few tags about the site (<Tags>)
  • A contact email (<Contact>)
  • An image (<Image>, this time can be a favicon and there's no need to base-64 encode it)
  • Name of the developer/author (<Developer>)
  • Input encoding (<InputEncoding>)
  • Search URL, including the earch terms (<Url>, again {searchTerms} will contain our typed search)

Very straighforward too, no need for explanations.

Here's another screenshot of the search engine added to my IE7:

 

And that's all, I've created two different XMLs because I didn't wanted to spend too much time, probably with more patience could be merged into a single one valid for both browsers (I haven't tried either adding the IE7 one in FFox).

You can install the Kartones.Net search engines from here.

UPDATE: As Community Server doesn't allows javascript in posts, I've created a small demo and updated the link to it.

Software Development meme

Via Vicente I'm "forced" to do this meme about software development, but in english :P

What was your age when you started programming
13 years old.

How did you started programming
I was born between computers, from an AMSTRAD PC/W (in which my father wrote articles and news for a newspaper) to an AMIGA 500 to PCs (starting with a "fantastic" 386 SX). So when I wanted to "create games" I asked my parents to go to a C development course (I still got the diplomma :).

What was the first language you used
C and bits of Assembler (to optimize for demoscene and graphics stuff).

What was the first real program you coded
I would have to look at my "repository" but probably the first would be a planes "videogame" done with the Borland graphics libraries for C (16 color VGA, LOL).

What was your first professional experience
Working helping with the 3.0 version of a e-learning portal (ASP 3, VB6 and SQL Server 2000), in 2001. It was a "hardcore" beggining but I had help from my colleages and I learned a lot of good n-tier architecture practices. A pity that I was at unviersity so I could only work 3 months there (the summer).

If you knew when you started programming what you now know, would you started doing it anyway
Of course! I love what I do, and I feel lucky to be able to work in what I have passion to do... Even doing consulting services (of which I'm a bit burnout right now) I've learned a lot about customer relationships, having a lot of patience, and being a "swiss knife" in order to survive all sort of problems and situations.

If you had to say just one thing about what you've learned along this years to a newbie developer, what would you say to him
Learn, be honest, and be patient. Everything comes if you keep on trying.

What is the most fun software piece you've ever developed
Probably, the PSOE Windows Live Agent. Although it was a lot of work (with heavy crunch time included), we enjoyed a lot checking the agent's personality, some funny situations and some funny behaviors included in the agent per customer request.

Who are you passing the meme
Nobody, because I easily get tired of memes...

Posted by Kartones | 1 comment(s)
Filed under:

In my new job I've started designing a new web module for an existing application. My first task (apart from reading documentation) is to design all the web interface of the module management.

As I became tired of Visio (is useful but only if you have the proper templates, and offers no interaction), I've used the "Paper Powerpoint Prototyping Toolkit", a PPT template I found some time ago in my RSS feeds. It provides black&white Vista-like controls and some sample windows to prototype GUIs, and "hot zones" (shapes with 90% transparency) to simulate interactions with the placed controls.

The results are quite good and the design is quite fast. I made some changes to speed up Powerpoint's rendering speed (big opaque shapes take long to repaint, so beaing all in black and white I made the windows backgroundless and now repaints quite fast ;)

Here is a small sample of the web page prototypes I've built today, complete with interactive buttons and tabs:

I've uploaded the 0.2 version of the PPT template because the author's website appears to be down since days...

Posted by Kartones | 2 comment(s)

Goodbyes are never easy. Times change, companies change, people changes, and our goals change too.

After 4 years at ilitia, coinciding with the new company's logo and office, I'm moving to a new job.

This past weekend I went to Barcelona to Jack Johnson's tour. His pianist, Zach, amazed me. He spent all the show not only playing quite good the piano, but too an accordion, a melodica, and even signing a bit. But most of all, he was all the time dancing or rolling on his chair, when not getting up and animating the crowd to clap and dance. He really looked as being fully happy doing his work.

Right now I'm tired of doing consulting services (my last 2 jobs, 5 years in total). This last months I've started to enjoy less my daily work, up to now when I've decided to cease this and change.

I want to focus on software development, so I'm moving to a analyst-programmer position at the R+D department of a big company (if you're curious, check my linkedin in few weeks to see where I'm moving to ;).

As I'll be focusing a lot on .NET development again, Windows Live Services (and Windows Live Agents) posts will decrease in frecuency, but I'll try not to forget them. In fact, I've got a personal WLA project on hold since some months and I'll probably unfreeze it now.

It's been a long time and I've "grown up" a lot at ilitia, but it is time for changes...

Things said, end of post :)

Posted by Kartones | 5 comment(s)

One day late, but here are the winners of the june edition:

- Code, Freak and Videotape, with 4 votes
- Sector 7G, with 3 votes
- Haztelo Tu, with 3 votes too

This time there has been very little participation :( Anyway, the awards will continue and I'll try to have some prizes apart from stickers for the winners.

Posted by Kartones | 2 comment(s)
Filed under: ,