Sunday, September 23, 2007

Writing my first Rails Application

Started work on writing my first RoR (Ruby on Rails) application a week back. Its a simple multiuser bug logging system.

Rails as a framework looks great. It does save lot of development time, only if you know how exactly to do things. Scaffolding generated views are also very cool, but to me it doesn't look very useful in practical scenario, since you will invariably find yourself rearranging fields or design of the view. But I am definitely impressed with ORM feature included with Rails. This is the first time I am using ORM, and I think the time it saves can be invaluable for certain types of projects. There are also some goodies like AJAX, DojoToolkit can be combined with Rails.
It took me some time to figure out how things work in rails. Also since I am new to Ruby, I had to go online many a times to get help.

I am very excited with prospects of being able to create very useful and robust applications in no time once I master Ruby and Rails. Right now this little application that I am making is a great learning experience for me.


Screenshot of 'Create new bug' screen.

Friday, September 21, 2007

Google Gears ! ... Looks Interesting

Google Gears assists you to create web applications that can work in offline mode. Gears is one of the first such tool to make this happen. With amount of javascript code being written increasing every day, one day web apps will be made on top of web services with javascript front end. You need to be as good with javascript as you are with ASP.NET, PHP or Ruby ! One more language to learn.

Saturday, September 15, 2007

Cool ASP.NET Validators !

Uploaded an article on enhancing ASP.NET client side validators using AJAX Control Toolkit. The example discussed in the article shows how to add validation callouts to every control and show list of errors in a modal dialog box with translucent background.

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

Tuesday, September 11, 2007

Dojo Book 0.9 Released

The Dojotoolkit is open source javascript toolkit for creating next generation web applications. As a part of documentation project for the upcoming version the Dojo Book 0.9 has been released.

You will find my name displayed , as a contributor on the book's home page. I have written the section on Drag and Drop API. Once Dojo 0.9 is hosted for public, it will be possible to view live demos of my examples in the book! Try out Dojo and ask your friends to do so!

This is my first shot at working with the open source community. A bit of personal achievement for me.

Looking forward to make more contributions (and learning many new things!).

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

Site Meter