
Some time ago I talked about a command line twitter client I was developing. Today I can proudly say it is finished… for now 
And I decided to upload the code to Codeplex GitHub for a few reasons. First of all it uses xAuth with .net with no extra library. Some may be asking “why would you want to do that if there are hundreds of libraries out there?”… well yeah but… no I don’t have an answer for that… I guess I just wanted to give it a try.
Also, while developing this tool I encountered some problems that some people does not ever find, specially people from English speaking countries. The problem appears when you want to twit say… “Peñarol Campeón!”. It took me a little while to discover the right encoding and as I said before, there’s not much written about it. (For more info take a look here)
And finally I wanted to share the code in case some soul out there wanted to give me a hand with the rest of the API. So far this tool only updates the status, but I’m also building a library (cleverly called shelltwitlib) where I’m intending to add every twitter API method.
As a bonus, if you use the shelltwitlib (since it works with xAuth) you’ll be able to have your tool displayed on your status like in the picture shown below.

Want more? Bit.ly integration is also available 
![works-on-my-machine-starburst_3_thumb[1] works-on-my-machine-starburst_3_thumb[1]](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiILiAoaInD08O06hudy0inXsqNjMYn56Ya2Vl9ZbWH5MrDC_nW1lLIA1JTBeg7spJSMc-CfaRT_siGbbQahsYRGTW51T0wIs_Zl6-ROrBJVS3kBL6mAAWXCsFHqraW0pcimLLZ5Q/?imgmax=800)
Read Full Post
Summary only...
The requested content appears to be script and will not be served by the static file handler.
For some (unknown at the time) reason I had this error while trying to view a WCF service app in the web browser. I googled (and binged) around and there was many reasons for that message.
My problem was that my brand new computer came with Microsoft .net 3.0 installed but IIS was not active. So I installed IIS after the WCF support so the WCF mime types were not installed.
To get this working all I had to do is running the following command:
C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\ServiceModelReg -i
Hope it helps someone else.
Read Full Post
Summary only...
Some time ago, I started to work on shelltwit a command line twitter updater (it only updates your status), but I didn’t want to use any existing library because I wanted to learn how to work directly to twitter API.
I looked around for some examples, the Twitter API doc is not well updated or complete, so it is not easy to start coding right away, you need to read a lot first (I hate when that happens). I found a good sample from Shannon Whitley called Twitter xAuth with .net. I started up with that code but I found an issue with international characters, like á, é or ñ, which kept me from posting about #Peñarol. So I started to hunt the bug, looked around online, went to the Twitter API user group and found out that there are a lot of issues with international characters. I found people form Brazil, Russia and Japan complaining about it. Apparently most libraries were written by english speaking developers so very few encounter the issue.
Now I can happily say that found the issue so I thought about posting the solution here.
Encoded strings (your twitter status) must be made to UTF8 according to RFC3986 and there’s no native .net function that does that, so after some researching I came up with an algorithm that does exactly that. So I hope it helps some one else.
static string UNRESERVED_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.~";
//http://en.wikipedia.org/wiki/Percent-encoding
//http://www.w3schools.com/tags/ref_urlencode.asp see 'Try It Yourself' to see if this function is encoding well
//This should be encoded according to RFC3986 http://tools.ietf.org/html/rfc3986
//I could not find any native .net function to achieve this
/// <summary>
/// Encodes a string according to RFC 3986
/// </summary>
/// <param name="value">string to encode</param>
/// <returns></returns>
public static string EncodeString(string value)
{
StringBuilder sb = new StringBuilder();
foreach (char c in value)
{
if (UNRESERVED_CHARS.IndexOf(c) != -1)
sb.Append(c);
else
{
byte[] encoded = Encoding.UTF8.GetBytes(new char[] { c });
for (int i = 0; i < encoded.Length; i++)
{
sb.Append('%');
sb.Append(encoded[i].ToString("X2"));
}
}
}
return sb.ToString();
}
Read Full Post
Summary only...
Last week Run 2.0 took place in Montevideo and I had the privilege of working with Guadalupe Casuso (from Microsoft) and Luis Pandolfi (from Infocorp) on part of the Keynote, we talked about Windows Azure and if you ask me it was too short.
After the keynote I talked to some people who told me the session was great, but most of them already knew about Azure, so I guess I never know how good/clear was for someone new to the Windows Azure Platform (if you’re in this category please send me a line). One thing Guadalupe told us, and I guess she was right, is that there’s no point of showing something you can’t use yet… it’s like showing a kid a candy. I don’t know, but one thing I do know is that we could have use the entire conference to talk about Azure :)
On my part of the session I had to show something on ServiceBus so I showed Steve Marx’s AnnoySmarx sample. I changed a few thing from the listener, one thread would never end unless you close the cmd window, and added a few messages for demoing purposes. The sample is pretty cool cause it let you change the wallpaper of my computer by clicking the images from an online web page (in this case hosted on Windows Azure). For my sample I deployed the web app at http://gomezwallpaper.cloudapp.net/ and people from the audience would get online and click on the images while on the main screen you could see the wallpaper of my notebook changing. I was pretty cool and showed how you can get servicebus up & running with a little extra work from what you do to host regular WCF services.
Another tool I used is Windows Azure Storage Explorer which I built myself to browse and manage items from a Storage Account. I recently uploaded the source code to codeplex, the project is here.
Read Full Post
Summary only...
I’ve been playing a bit the the RC version of the .net framework 4 and already found a new cool method.
Until now when I wanted to check for a valid string I had to use the following code:
if (string.IsNullOrEmpty(text) || string.IsNullOrEmpty(text.Trim()))
throw newArgumentNullException("text", "text is not valid");
And I had to do that because a string containing nothing but white spaces was not valid and if you called the Trim() method on a null string you’ll get a NullReferenceException, you know the message… (“Object reference not set to an instance of an object.”)
So, the new cool method I found is a static method from string called IsNullOrWhiteSpace. the name pretty much says it all, except that the real name should be IsNullOrEmptyOrWhiteSpaces ;)
Instead of writing the code shown above, where you could easily forget the second condition, now you can have the same behavior in one single sentence:
if (string.IsNullOrWhiteSpace(text))
throw newArgumentNullException("text", "text is not valid");
Read Full Post
Summary only...