Thursday, August 16, 2007

My Dream Gadget !

I am thinking of buying a new gadget. Maybe you can help me. I am looking for below mentioned features. Do you know of any gadget (mobile/laptop/tablet/handheld) that is a close match for my needs?

If yes, do drop a comment.

  • Wifi : For wireless internet.
  • Size : at least half the size of laptop.
  • TV Out : This I think can be a great feature for viewing videos, surfing playing games.
  • Full HTML Browser : Yes, preferably some port of FireFox with javascript.
  • Operation System : Linux or any other. SDK should be available. Open source stuff preferred.
  • Games : It should be powerful enough to run some of older 3D games like Doom. Ability to run emulators like MAME would be awesome. Should allow connecting upto 2 wireless joysticks for multiplayer gaming.
  • Connectivity : Bluetooth would be required. There should be ways of attaching a pointing device (mouse) and QWERTY keyboard via some kind of interface. It should be able to turn into a small computer if required. It could even have a couple of USB ports for attaching joysticks or other hardware.
  • Screen : Should be wide enough for displaying descent length lines of text. Even if it can display 10 such lines, I think it can be used for reading ebooks.
  • Multimedia : Ability to play audio and video files of common formats. Flash player could also be a great addition.
  • Storage : Mini SD cards up to max limit (2 GB I think). Having a hard drive would be really cool.
  • Price : Okay, this one is important :. Should cost around $200 – 350 (Rs. 8000 – 15000)

Wednesday, August 15, 2007

Fun with Silverlight !

Have been working with Silverlight since last month. Its a really cool thing and has lot of potential. Posted an article on the 'CodeProject.com' on creating real time AJAX line graphs with silverlight.

You can read it here : http://www.codeproject.com/silverlight/Silverlight_AJAX_Graph.asp

It can have many applications in Web 2.0 applications. Planning to do more interesting things with Silverlight.

Monday, July 30, 2007

Life without Overloads

Commonly asked question at any job interview:

"What is method/function overloading?"

Method overloading is indeed one of the most commonly used and easy to get concept of languages like C\C++, Java and C#. But there are some very good programming languages, that don’t support method overloading. For a person like me who is trained only in C like languages this sounds absurd. How can a language be very good and NOT support method overloading. But as I am learning more about Ruby, my beliefs are fast changing.

Overloading is very useful when done for constructors of a class. In languages like Ruby there is no constructor as such. The 'initialize' method acts as constructor. All startup code goes into initalize method. Since method overloading is not allowed it is not possible to have overloaded constructors.

One soultion is, using array as parameter with '*' operator. This operator allows grouping all the parameters into an array. I personally find this solution inelegant, but it will work if number of desired overloads was small.

class Myclass
def initialize ( *args)
if args.size==1 then puts "function called"
end

if args.size==2 then puts "first overload called"
end

if args.size==3 then puts "second overload called"
end
end
end

a = Myclass.new(10)
b= Myclass.new(10,"abc")
c= Myclass.new("a",1,"b")

Output:
function called
first overload called
second overload called
In languages like Ruby, function parameters are 'typeless'. So instead of passing multiple parameters we could just pass a single object that contains required values. A hash (or associative array) is a good candidate for this work.
class Widget
def initialize ( *args)
@border = args[0]["border"]? args[0]["border"].to_s : "undefined"
@color = args[0]["color"]? args[0]["color"].to_s : "undefined"
@font = args[0]["font"]? args[0]["font"].to_s : "undefined"

puts "Border:#{@border}px"
puts "Color:#{@color}"
puts "Font:#{@font}\n\n"
end
end

h = {"border" => 5,"font" => "Times","color" => "RED"}
button = Widget.new(h)

Output:
Border:5px
Color:RED
Font:Times
Better still, we can use the following syntax:
button = Widget.new("border" => 5,"font" => "Times","color" => "RED")
Above syntax gives a clearer picture of how many and which values were passed. Javascript like Ruby, doesn’t allow method overloads. Similar solution works.
c1 = new dojo.dnd.Source("c1", {creator: node_creator,accept:
["red","blue"],horizontal: true});
Instead of passing an array, a JSON object can be passed. Below is code snipped using Dojo toolkit API.

The second parameter is a JSON object, which can be used to pass any number of values.Similar thing can be done in normal programming languages too !

So I am thinking.. is life impossible without overloading? ...

Tuesday, June 26, 2007

Silverlight based photo viewer

Uploaded Microsoft Silverlight based photo/slide show viewer. It is not very difficult to use it in your website. Check out yourself :

http://ashishware.com/Silverlight_example.shtml

You can download required files for hosting it from above website.

Sunday, June 10, 2007

My first attempt at game programing !

Completed working on my first game few weeks back. Its a very simple game written in Ruby. Its got 4 levels. I learned quite a bit about game programing from this game.

You can read my experiences here : http://ashishware.com/FirstGame.shtml

Below is a screenshot from my game :

Saturday, May 05, 2007

Different ways of doing AJAX

A new article on my website , discussing different javascript libraries available for adding AJAX support to your webpages. Discusses individual strength of six libraries which include:

1] Basic javascript and XMLHTTPRequest object.
2] Prototype.js
3] Dojo Toolkit
4] Yahoo UI Library
5] ASP.NET !
6] Ruby on Rails

Read the article here: http://ashishware.com/Ajax1.shtml

Sunday, April 15, 2007

Hindi/Marathi/Sanskrit Transliteration on Blogger.com !

So finally they did it. Now blogging in India's National language (Hindi), Marathi and Sanskrit has become even more easy. Great job guys !

Many may find a problem FireFox and Devanagari script. FireFox doesn't seem to render joined Devanagari letters correctly, at least on Windows. IE works just fine.

For example,

Entering 'kya kar rahe ho. ' in the blogger.com's post editor window in FireFox gives this:





Where as it should give this:




The correct output is from IE. Both browsers were set to UTF-8 Encoding. The above problem can be seen for words like 'hindi'. Here again FireFox fails to render the correct output.

I found a solution which I am yet to try out here:
http://marathiblogs.net/font_problem

Also one more piece of advice that I would like to give Google, is to make transliteration tools available on their website. Adding spell-check is also a great idea (am I asking for too much).

For more on Transliteration tools for Indian Languages:
http://ashishware.com/Transl.shtml

Wednesday, April 11, 2007

Code for JSON DataSet Deserialization in

My typed DataSet looks like this:









This method is in code behind

[WebMethod]
public static MyDS GetDataFromServer()
{
MyDS d = new MyDS();
d.MyTable.AddMyTableRow("1", "abc");
return d;

}



The following lines are from aspx page accessing the service:

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods=true>
<Services>
<asp:ServiceReference Path="Common\TestService.asmx" />
</Services>
</asp:ScriptManager>



Given below is the javascript code:

<script type="text/javascript" language="javascript">

function OnLookupComplete(result, userContext)
{
//Accessing typed dataset using column names
alert(result.tables[0].rows[0].ID);
alert(result.tables[0].rows[0].Name);
}

function OnError(result)
{
alert("Error: " + result.get_message());
}
function init()
{
debugger; //start debugging
TestService.GetDataFromServer(OnLookupComplete,OnError);
}

</script>


It is called on body.onload

<body onload="init();">

Thursday, March 29, 2007

Dataset JSON Serialization

There definitely seems to be some problem serializing dataset in the latest 'RELEASE' version of ASP.NET

It keeps on giving some 'Circular Reference Error' while deserializing a ASP.NET dataset.

After lot of researching on the web , this is how I solved it

1. Downloaded ASP.NET ATLAS JAN CTP from here:

2. Added reference to Microsoft.Web.Preview.dll

3.Added following lines to web.config

<converters>
<add name="DataSetConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataSetConverter, Microsoft.Web.Preview"/>
<add name="DataRowConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataRowConverter, Microsoft.Web.Preview"/>
<add name="DataTableConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataTableConverter, Microsoft.Web.Preview"/>
</converters>


4. My web service returns a typed dataset with ID and Name columns.

Now these javascript lines work:

result.tables[0].rows[0].ID
result.tables[0].rows[0].Name

Monday, March 26, 2007

Planning to write a game!

Couldn’t think of better way of learning a new language. I am seriously thinking of writing a game using Ruby and SDL. I know ruby is not the best language to do this, but
I just want to get exposed to the field.

Here is the list of things I need to learn for making my first game:

1] SDL (Simple Device Layer)
2] Sprites (I find the concept very interesting)
3] Collision detection (I guess will be complex)
4] Free music and sounds (Yes! They are very important)
5] Game loop (Is that what is it called?)


Right now I am desperate to find more information on above stuff. My first game would be very simple, maybe car racing or shooting.

Hmmmm ....some real interesting time ahead.
My 'First Game'!!

Site Meter