January 2008 - Posts

This post is more of a reminder than a technical one.

As we continue developing WLAs, more customers are asking for more diverse questions. One of the last ones has been what is Microsoft's policy for advertising banners (both specification restrictions, like only gif/flash or resolutions, and content restrictions, like no sex or no illegal aspects).

Thanks to Pablo, I can now answer the question correctly. Microsoft's Creative Acceptance Policy Guide can be found here in english, or here in spanish.

Posted by Kartones | with no comments

Today I've had to build a list for a customer of what topics a default agent supports (and should be revised by the customer to adapt their agent to their wishes).

The list is based on the english template (with chitchat & userinfo modules activated). Other languages contain almost the same categories, but sometimes with different names.

Note: By category we understand a group of topics related to the same area (for example: "love" would be a category).

Here is the list of conversation categories/areas included:

  • Affection: Love & Hate topics, like "I like you" or "Do you hate me?".
  • Agent: Agent related speech, like asking who built him, if he has gender or it is a robot, or where the agent is from.
  • Apology: Quite self-explaining, both good and bad user apologies and answers for them.
  • Declaratives: Generic "catch" for declarative patterns, like "I live in xxxx", "I need xxxx" and such.
  • Interrogatives: Same as previous one, but for interrogative patterns, like "Am I xxxx?" or "Can I xxxx?".
  • Comedy: Jokes and humour-related questions and answers.
  • Common Sense: This library is like a "smart" pack. It is used to try to make the agent feel more human and know answers to trick-questions like "what color is the sky?" or "What letter comes before...?".
  • Cultural References: English and geek cultural references, like "All your base are belong to us" xD
  • Deep Thoughts: Talking about death, religion or the meaning of life.
  • Drugs: Self-explanatory.
  • Emoticons: Responses for user-sent emoticons.
  • Feedback: User providing the agent with feedback about his performance. For example, "You are not helpful".
  • Manners: Polite answers, like when received "thanks".
  • Miscellaneous: An enormous mixed-bag of uncategorized topics...
  • MSN Specific Chat: Q&A about Messenger, the Activity window and other Messenger client features.
  • Salutations: Self-explanatory.
  • UserMood: Answers for good and bad user moods, like "I'm sick".
  • Violence: Violence-related questions, like "I want to hurt people".
  • Vulgarity: Self-explanatory, detecting different levels of insults.

 

Another features the agent has by default are:

  • Detecting when user is speaking of non-important subjects (to remind them to focus on the agent's purpose).
  • Understanding and storing the user's name, birthday and gender.
  • Generic help commands
  • Generic "I don't understand" catch-all responses
  • Changing the language's locale to another (for example UK or US english)

We all remember the great Monkey Island songs.

We can also feel epic when fighting bosses at Halo 3 because of it's fantastic soundtrack.

So, it is clear that music is a very important component in videogames... but what about being the key component, a true determining element?

 

First, DDR and Stepmania appeared: Dancing on an arrow-marked mat or platform, following the on-screen music to get the feel of dancing. Easy concept, plus on Stepmania you've got hundreds of famous songs to play.

Difficulty adds additional steps, faster arrows, better precision (to detect incorrect steps), and multiple simultaneous steps. The song influences too (a Britney Spears won't have the same "dance" than a DJ Tiesto song).

Since I tried it at home, it's my way of doing aerobic exercise (but I do not play at arcades, just at home).

 

Then, Guitar Hero series came: Same idea of DDR but exchanging a dance mat for a joystick-guitar.

Easy to learn (at least my friends are better moving their fingers than their legs), less embarrassing if you play in a public place, and very very fun. I'm searching for another USB guitar to be able to play coop with a friend (GH2 on 360, GH3 on PC).
Recently Rock Band came out as a "second version", with additional instruments and up to four simultaneous players.

 

And now, another possible revolution comes from the indie development scene, Audiosurf: Load the game, choose a MP3 song, and fly in a space highway trying to align same-color blocks, everything procedural generated from the chosen song.

It is still a beta (you can only play few songs of your own, then only the demo ones) but very playable, addictive and focuses more on your reflexes than on feet/fingers music synchronization.

I can't wait for the final version to be released to buy it.

 

So music can be a key component, indeed. And it usually ends being a cool one :)

 

Note #1: I've deliberately left out Rez out of the list because I haven't played it (yet).

Note #2: To better enjoy Audiosurf, I recommend playing with joystick/pad instead of keyboard (with the 360 controller it's fantastic).

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

On the following months I'm having some movement, both assisting to events and/or participating in them:

  • 22-24 February - <mind camp/>
    A special, closed event that will be held on Madrid over a complete weekend. One hint, the poster:
  • 7 March - DNCMadDay
    One day full of game development related speeches! It will be held on the Alcalá de Henares University (in Madrid), and this is the agenda:
    10:00-11:30 XNA 2.0 (me, Vicente and Jorge)
    12:00-13:30 Oscar del Moral (TBD, related to XBox 360)
    [LUNCH and Q&A]
    16:00-17:30 Casual Game Development with WPF 3D (Riqui)
    17:30-19:00 Web Security (Pedro & Matias)
  • 17-18 March - Windows Live Training @ Zurich
    Along with PedroA, we're going to Zurich to take a "deep dive" Windows Live training given by Microsoft. We'll probably go on the 14th at afternoon to enjoy the weekend visiting Zurich before the training.

So, looks that the first quarter of this year is going to be very interesting!

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

When I found a reference earlier today to this interesting KB I thought "wow, maybe I can finally get rid of the UAC prompts on my gaming PC" (I won't remove them from the development PC under any circumnstance), so I've just finished trying it and here are my results.

For this test, I've chosen a free application, Fraps, a screen capture tool compatible with DirectX (great for taking screenshots while you play videogames).

Fraps needs Administrator privileges to be able to capture in-game screenshots, and every time you run it, prompts for UAC elevation (and if you setup it for launching with windows, Vista blocks it and you have to manually allow execution, so it's a bit clumbersome with UAC on).

So, we open the shorcut to Fraps properties... (yeah, my colors are very dark, but it's still Vista 64).

 

We install the Application Compatibility Toolkit 5, and create a new DB of type Application Fix.

We setup the properties for the Fraps executable.
Note: You must install que Comp. Toolkit on the destination machine because the Compatibility Administrator searches for the executable path ¬¬

And we choose the "RunAsInvoker" fix.
Note: RunAsInvoker as it's name implies runs with invoker privileges (which if you have UAC on means always as user), RunAsAdmin asks always for elevation, and RunAsHighest will ask for elevation just if the account has administrator privileges.

We save it, and only remains installing it to apply the "fix":

Fraps successfully runs now without UAC prompt, so I tried running World of Warcraft (which I launch with "Run Always as Administrator" as its updater does not work 100% perfect under Vista)... And Fraps didn't worked, i couldn't take any screenshot :(

The reason is that Fraps is running as a normal, unprivileged user, so it can't access the video memory and grab any screenshot. If I run Fraps with right-click -> Run As Administrator, it works again and takes screenshots ;)

 

So I had one additional step left to do, uninstall "the fix" (and later the Compatibility Toolkit):

This KB may have some use, but not for me. I was hoping to have some sort of "auto-elevate privileges on desired apps" but seems I'll have to keep answering UAC prompts to play some games.

I've finishing reading another small ebook, Blog Profits Blueprint, from Yaro Starak. As usual, the review is in the Book Reviews page in case you want to read it.

Posted by Kartones | with no comments
Filed under: ,

I've been using Last.fm since almost a year, and apart from small defects (mostly strange music changes like from techno to Mozart xD) I love the app.

One of the nice features it has is a simple API to interact with their servers and, for example, send your playlists from Winamp, Windows Media Player or even your iPod.

But last week, thanks to PedroAfa I found and tested a fantastic app, Last.fm Mobile. As the name may hint, it is a Windows Mobile version that allows to play Last.fm radios anywhere!

As I feel lazy today to write too much, here are some screenshots:

 
Main window, playing via streaming a song.

 
An events window, very useful to see if anything goes wrong.


And the Radio tab, where you type in an artist name or tag and Last.fm searches for similar music.

 

Beware that we are streaming music, if you aren't using wifi it may be quite slow (it buffers before playing so music shouldn't stop even on slow connections).

Posted by Kartones | with no comments
Filed under: ,

In order to implement correctly structured code for a Windows Live Agent, we should remember that the /Shared folder exists and what its purpose is. If we want to access an RSS feed and display its contents, the data access code (at least) should be placed inside Shared.

Then, we can parse & format the data, adding localized text, displaying it in different formats (for example currency, or datetimes). The following diagram provides an example for a spanish & english agent:


Click on the diagram to enlarge it

 

Apart from that, I prefer refactoring the included patterns for all "ChitChat" (default conversations the agent can understand and handle), because when developing a multilanguage agent is not always easy to find the equivalent in other languages (at least in English<->Spanish some translations are not equal). Also, sometimes I want to reuse a set of answers for multiple patterns.

So what I do is take a pattern like this from _agent_root_/Spanish/Chat which calls a procedure in /BuddyscriptLib/Spanish/Extensions/Chat/Agent_es.pkg:

{title="¿Quién me hizo?" category="Spanish - About MACRO_AGENT_NAME_ES" contributor="Microsoft" body_type="buddyscript" editable="1"}
answers QuiénHizoEsteAgenteInteractivo
  call QuiénHizoEsteAgenteInteractivoAnswer()

 

And do this steps:

  • Create the package _agent_root_/Spanish/Chat/Specific/AgentAndCreator.pkg
  • Add a reference to Agent_es.pkg (to use the existing matching subpatterns)
  • Create inside it a function inside it with the answers:

    procedure WhoMadeTheAgentSpanishAnswer()
      - He sido creado por MACRO_AGENT_CREATORS_ES
      call CambiarTema("mis creadores")

  • Create the file _agent_root_/Spanish/Chat/Specific/AgentAndCreator.ddl
  • Cut and paste (from Agent_es.pkg) the pattern, using my own response function:

    {title="¿Quién me hizo?" category="Spanish - About MACRO_AGENT_NAME_ES" contributor="Microsoft" body_type="buddyscript" editable="1"}
    answers QuiénHizoEsteAgenteInteractivo
      call WhoMadeTheAgentSpanishAnswer()

I will keep the same folder & files structure in the _agent_root_/English/, just using english equivalent procedures (but with same notation), like this:

{title="Who Made Me" category="English - About MACRO_AGENT_NAME" contributor="Microsoft" body_type="buddyscript" editable="1"}
+- Who made MACRO_AGENT_NAME?
answers WhoMadeThisInteractiveAgent
  call WhoMadeTheAgentEnglishAnswer()

 

I personally find much better to have extra subfolders organizing the packages (which I try to limit to as few different topics as possible each one), and by using the same xxxxxxxSpanishAnswer() xxxxxxxEnglishAnswer() I can even assign to someone else the task of modifying the pattern an customizing it to my desire).

 

As a final tip/trick, in /Shared/Global.pkg we can find some macros for default text substitutions, like this one:

macro COMPANY_NAME           Kartones.Net

And the spanish localized version:

macro COMPANY_NAME_ES        Kartones.Net

Then, they can be used to place the right string anywhere:

procedure GeneralAgentPresentationEnglishAnswer()
  - I'm MACRO_AGENT_NAME, your guide to MACRO_COMPANY_NAME.

 

But what if you want to add a new macro? Well... it is so simple! Add it on /Shared/Global.pkg file:

macro AGENT_CREATORS         Kartones

And just call it from a pattern adding MACRO_ before it's name:

procedure WhoMadeTheAgentEnglishAnswer()
  - I was built by MACRO_AGENT_CREATORS.
  call ChangeSubject("my creators")

Spending tons of hours ("too many" some friends say) during the week in front of laptops can be very very bad for your neck. You should always use a normal monitor to avoid "humpback"-like positions.

As I was starting to notice some small hurts in the neck somedays (specially weekends, after 5 days working), I bought a new monitor, and decided to use my old 17 as primary display for the laptop.

It worked fine, but I was sad to not use the laptop display... So I looked for a notebook cooler + docking base. The "cooling" part was not mandatory, but as long as it is quiet, it doesn't hurts.

After buying one, now I've got the "development laptop" asi in the photo, and have attached a normal USB keyboard. I've got lots of space on the desk and finally use it's display without hurting my neck.

But... also I've discovered the marvelous world of "dual monitor displays"... And I only wish I had before :)

Having two displays speeds up production a lot... I can have Visual Studio on the left one and launch my apps on the right one (to debug without ALT+TABbing), or NUnit, or have the IM clients and conversations on the right... I can run Powerpoint presentations on the right, while reading the slide notes on the left, or watch a film meanwhile I VNC-control my server.

 

Just fantastic. If you can afford an extra monitor (they don't need to have the same resolution, I have 1440x900 + 1280x1024) just try it and you'll notice the difference.

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

Google guys keep doing an incredible work of adding features and features to ther Google Documents, the last one being embedded presentations via an iframe... And as I liked it, I've done a new small Community Server module to be able to post them into blog or forum posts :)

I've added it to my KartonesNet CS2007 Addon Pack, instructions are very easy but included ;)

And here's a small demo I've done to test too how good importing from Microsoft Powerpoint:

Some fo you may know what the demoscene is (if not, learn about it ;) If you do, you've probably seen lots of amazing demos and cool 3D stuff (maybe even you've seen .kkrieger, a 96KB shoter with Doom 3-like quality ;)

But one thing I had read about but never actually watched until recently  has been text mode demos. yup, MS-DOS (in "hi-res" ASCII mode) demos, hacking the color palette and doing every 3D effect you can imagine of, with ASCII characters.

Simply amazing. Fire, plasma, rotozoomer, spirals, donuts, tunnels, vectorial and 3D elements, multi-scrolls, scrolling texts, particles, "images"... Definetly worth looking at, you won't believe how they do it.

Here are some screenshots of 4 demos. In movement they look much more impressive:

 

 

Note: I've updated my demoscene links mini-section at the right with few more websites.

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

All my friends know that my favourite color is black. I wear black, my iPod is black, my phone is black... And of course both my Vista Aero and Office 2007 are in black color :)

But recently my friend Lobo666 sent me his "Darkness theme", which he has been using for years (and adapted from Windows 2000 to Windows XP).

I've always used gray window backgrounds (instead of the retina-killing white), but after trying this, I wanted to use it everywhere:

As you can see, it works perfectly on Vista in Windows Classic mode. Windows are very dark but can bee seen, the text is readable without problems and selection is red.

So... I installed it and tried a few apps. For example, Paint.Net is very well done, excepting the gradient grey background, everything keeps visible:

Visual Studio 2008 would need some tweaks but overall is not bad (as it has tons of custom colors I agree it would be a miracle if everything worked at first attempt):

But then I found the humorous part... Office 2007 :D

Microsoft Word works acceptably. All the ribbon is grey instead of black but ok, documents aren't affected, I can see the icons... let's give it a 5 out of 10 ("it works but looks ugly").

I tried then Outlook 2007... And this is the best looking section of it:

As you can see, menu headers don't use system color configuration, so are grey; Some captions do not use system colours either, so we get black text + black background, and the "inverted color" icons are uglier than the VS2008 ones (dudes, look at Paint.Net... normal icons work correctly, do not touch them ;)

This could be relative painless... if generally Outlook 2007 didn't became a pain to work with if you use a black theme:

Some icons detect the black background color, but keep their black color (remember, black+black = nothing visible), the choosen sort by column keeps a grey selection color, so united with light-grey text color I now can't see the date of any email, collapsed emails ("last week", "last month", etcetera), other stuff keeps the "office colors"...

So, dear Microsoft guys... I love Office 2007, I like and find quite intuitive the new ribbon system... but you should do it conforming to usability principles (using OS color schemes, or at least allowing to deactivate the "cool" visual scheme and use windows classic one).

 

Oh, and as a sidenote, too bad too that I can't mix this dark theme with Aero (I would need to re-select every color again by hand, and I haven't yet found where to export the theme once configured).

 

Update: Added to the downloads section, including the Vista's Aero theme. Not same "dark" result but Aero sucks at customization ;)

The Winter edition of the MVF awards is over and here are the winners:

- Sector 7G, with 8 votes!
- Mi Ubuntu y yo, with 5 votes.
- Code, Freak and Videotape, with 5 votes too.

 

Congratulations to the winners, you've got your MVF badges on your blogs until june 2008.

 

Note: I'm open to suggestions (apart from a T-shirt, which is typical) of small and/or fun prizes to give to future winners. any ideas?

Posted by Kartones | with no comments
Filed under: ,