December 2007 - Posts
This has been a year full of changes, so I'll try to make a short summary of the most relevant points.
Related to work, after some months continuing doing .NET consulting services and development and a bit of training, the opportunity to start developing Windows Live Agents arised and I took it, so I switched to WLA development.
.NET is still there (actually I'be been continued developing some things at the office and at home), and my plan for the 2008 is to "update" my certifications (this year I haven't achieved not a single one... I'm still .NET 1.1 MCAD), and I'm learning about .NET 3.5 (focusing the most on ASP.NET and Silverlight), but I wan't to hit hard with the Agents, because now that the learning phase is mostly over, comes the experience phase, where I can start to focus on "what can I do with this?" instead of "how do I do that?" and I like it :)
I gave just one speech about XNA (to the Madrid dotNetClubs), but next year I'll try to be more active in that aspect too. For start, we've got a small dotNetclubs weekend event and in march I'll give a 2h speech about XNA 2.0 with Vicente and Flipper86 (at my old university :_)
I jumped into having my own blog community, at least to unify my blogs (I had four: Blogger, dotText, WLSpaces, custom ASP 3.0 webapp), and right now it has 14 blogs. Some are a bit dead but others are not only constant but fantastic, with lots of fresh info and cool stuff. I've also separated more my blogging into them (and by using Twitter for personal matters).
Managing a Community Server site was difficult at first, but now I'm even developing some custom modules, fine-tunning it and thinking about doing some more hard internal customizations.
Recently I added Google Apps for Domain so now I try not to offer only a blog, but a set of tools and a "community" where we can share ideas not only via emails. Let's see if it becomes useful.
I've tried a lot of web 2.0 services and, although some "didn't pass the exam", I'm actually using some, like Twitter, Last.fm or LinkedIn. I've also focused more on using web apps than desktop ones, or joining the desktop ones in as few as possible (for example, why having a FTP client if I can use FireFTP).
I've got tons of freeware or opensource programs (I've got less than 10 commercial software apps, including Windows), and I stick to my "don't mind if it's old, mind if it acomplishes what you want from it", so I'm still using "legacy" apps like Winamp 2.x or VNC.
I've finally joined my two mobile phones into one (and being a Windows Mobile PDA-Phone, with "addons"), and have at last unified my address books (into gmail's contact manager, which I export and then import from my PDA into PocketOutlook), I've done some rounds of Messenger contact cleaning, and I've updated my PC network at home and have expanded it to 4 pcs (one even with Linux, but I don't have much time to play with it).
I need more time management refination, but somedays the improvement is noticeable, and I don't feel as much pressure as before when I can't acomplish "so much at once". And all that going out with friends, watching a lot of films per week and finishing a videogame each 1-2 weeks :)
And in the personal subject... too many things have happened.
Let's simply point that I'm trying to get fit again (at least lose some weight and clean my lungs now that I've quit smoking) and that finally in less than two months I'll have my own house. It will make a really big change in my life (mostly in my economy xD) but I was needing "my own private space" from too long.
Well, enough of selfish chatting... Let's hope next year I can post tons of interesting and geeky stuff, that we get bigger and better and that software development continues being as fun as it is :)
Happy new year!!!
Starting with this post I'm going to not only provide general tips & tricks about WLAs, but actually showing how the IDE works and the process of building an agent.
I'm going to develop the agent fully and just using the 5.0 SDK, which is in pre-beta stage and scheduled to be available in the first quarter of 2008. And I will use Visual Studio 2008, but VS2005 is also supported.
I assume you've already installed VS2008 and the SDK.
Important note: you must place your WLA SDK license file inside the new sdk folder "C:\Program Files\Windows Live Agents SDK\" in my machine. If not, the Management Console won't let you launch agents.
Let's start by creating a new project with the supplied template:
And choosing our desired languages and extra features (pre-made libraries for basic chatting). I want spanish and english with all language features (I can always disable unwanted patterns via code).

After creatin the files, here's how your project will look:
The Shared folder contains language-neutral files (this is where you should build your logic if you're developing a multi-language agent), while Spanish and English folders contain specific language code (this is where you should call language-neutral logic and present it in the desired language and formatting).
Note: BuddyScriptLib filder will be renamed as WLALib when 5.0 goes out of beta. You shouldn't touch the files inside it (if you need to modify anything, override the procedure/function instead).
Some initial cleaning I've done is this:
Delete the following files:
- /English/GenericQueries.txt
- /Spanish/GenericQueries.txt
- /English/Tests_en.ddl
- /Spanish/Tests_es.ddl
- /Shared/Tests.ddl
- /README.txt (but be sure to read it at least the first time you create a WLA)
Modify and/or remove unwanted languages in this files:
- /Variables.ddl : Removed other languages references and responses (I still have to check the pattern contents and adapt to my desired responses).
- /Shared/Global.pkg : Removed other languages references.
- /Spanish/Overrides.ddl : Removed Mexican spanish references (I only will maintain Spain spanish). Adapted initial greeting to my preferences.
- /English/Overrides.ddl : Removed all non UK english support (same, I will only maintain right now UK english). Adapted initial greeting to my preferences.
Configure the following file:
- /Zero.bfg : Setup MSN accounts for staging and production agent (one per language).
Note: MSN account passwords are no longer encrypted in the bfg file.
And that's all, we've got a spanish + english agent, with all basic features, setup to launch in the Messenger cloud, with slight personalization and some initial cleaning performed.
In the next tutorial we will continue customizing the agent and adding one or two new features, like showing data from an RSS feed.
Most of the people have digital assets that would be terrible to lose: From digital photos, to documents, source codes, or even licensed software (without burned copies on CD/DVD).
Personally, my fear is divided at 50% between photographs (I scanned all "paper photos" and got rid of the originals so losing the digital ones would be catastrophic) and source codes: I store every single file of source code sicne I started learning C 13 years ago... I'd do the hara-kiri if I lost all this historical data.
So, to avoid that, here's the backup procedure I use.

- One backup scheduled each 2 or as much as 3 weeks. Done on saturdays or sundays to avoid the "I don't have time" excuse. I use Google Calendar and email+popup+sms reminders to avoid forgetting it.
- No skipping of a scheduled backup: If I really can't do it one day, I move the appointment to the following day. Is more safe to wait one more day than another 2-3 weeks.
- Check-list: I have a spreadsheet with the check-list of every step I have to take to do a backup. As detailed as possible, like "Export your simp-pro full keyring" or "Export your gmail contacts as gmail csv file with the default name".
This is very important if you (as happens to me) can't automate the whole process. - Export your outlook datafile. I do a full export in PST format of all the work's emails. It is easy to forget that if you download from Exchange (or use POP3) the emails, you only have your copy of them ;)
Also I recommend (sadly because of a bad experience) not to ZIP/RAR the PST file, just in case data is corrupted (it is better to loose some emails that not being able to extract anything at all). - Export online content you feel necessary: I export a copy of every single doc & spreadsheet from Google Documents, my virtual drive sensible data..
- Separate "static data" from "dynamic data".
- First one is everything which probably won't change, like new photographs, icons, images...
- Second one is everything which will get modified: Source codes, documents...
- Incremental backup (using last point separation):
- New static data is added to existing folders (like "Photos").
- New dynamic data is copied in a new folder (like "06 Dec 2007").
- Redundant backup: I have 2 laptop HDDs (60GB each actually). I make the backup at the same time on both of them (via USB 2.0). I prefer having two copies but being "double safe" that even in the disaster of a hardware fail on one of the HDDs, the other will still be there.
In the past I used just one (of 30 GB), and as I did when changing it, I plan to replace them each 2 years probably with new and bigger ones.
I've still some work left to do, like taking advantage of CruiseControl.Net/NAnt capabilities to automate my server backups (SQLS, MySQL and SourceSafe databases), but until I move to my new house I have on hold setting up again the continuous integration server so backups will wait too.
Today I'm finishing reading the latest pending RSS feeds, and found some interesting game development related posts/articles. Here they are just in case you wanna read something about game dev today:
Merry Christmas :)
Just a small post to inform that the materials of the WLA London training held last week are available for download.
One missing feature of the Windows Live Agents SDK, at least on the documentation, was the hability to read xml element properties.
Being so oriented to XML parsing and handling it should be possible... So by digging in the old SDK forums I found it.
Having this sample XML:
<?xml version="1.0" encoding="utf-8" ?>
<user id="1" name="Kartones">
<language>Spanish</language>
<location>Spain</location>
</user>
In order to access element properties (id and name in the example) we just have to add a @ when creating the datasource and specifying its name:
datasource UserXML(FILEPATH) => ID, NAME, LANGUAGE, LOCATION
file
FILEPATH
simple xml
user
@id
@name
language
location
Simple but not mentioned in the current documentation ;)
P.S.:By the way, seems that Windows Live Messenger 9 Betas are out, you can see some of the cool stuff it will include at Liveside (I like the custom sounds and multiple sign-out options).
P.S.2: I've been a bit out because I was last week at Microsoft UK at a partner Windows Live Agents training. As most of the content was "restricted/confidential" I will just say that the new SDK is quite interesting (Visual Studio integrated, and with new features) and that more changes are on the way. Next months are going to be very entertaining :)
After reading about it in an email sent by a friend, I've not been able to avoid going to Nuevos Ministerios (in Madrid, Spain), and getting photos of this cool xmas decoration:

Simply great :D
Christmas is coming and, as stated, 6 months later it's time to open again the nominations for the Kartones.Net Most Valuable Freak awards.
During december, anyone can leave a comment in this post giving 3 votes to their selection of the freakest and geekest blogs of this community. At the end of the month I'll count the votes and award with placing the MVF logo in the winners' blogs until june.
The only rule to this awards are that you cannot vote my blogs, that is:
- La Web de Programación
- Kartones Blog
- The Elder Thoughts
I prefer that you go and read the other blogs and judge who are the best ones ;)
Good luck for the bloggers!
--- Spanish version / Versión en español ---
Llegan las navidades y, como se estableció, 6 meses después es hora de abrir de nuevo las nominaciones de Kartones.Net a los Most Valuable Freak.
Durante el mes de diciembre, quien quiera puede dejar un comentario en este post dando 3 votos a la selección de los blogs de esta comunidad más frikis y geeks. Al final del mes contaré los votos y premiaré colocando el logo MVF en los blogs de los ganadores hasta junio.
La única regla de esos premios es que no podeis votar mis blogs, que son:
- La Web de Programación
- Kartones Blog
- The Elder Thoughts
Prefiero que vayais a leer el resto de blogs y juzgueis cuales son los mejores ;)
Suerte a los bloggers!