Monday, July 26, 2010

Some thoughts on a language neutral web

I have been playing around with Google translation and transliteration APIs which I found is very useful to overcome the language barriers in using the web. This especially have a lot more importance as web is still not accessible to a vast majority of the people in the developing world due to many reasons.Even if it is accessible language becomes a barrier for most of the people to utilize its benefits as only very little resources will be available in their local language.To make the idea of having the knowledge accessible to everyone everywhere at anytime possible it is important to solve this language problem.

Think about this idea of viewing every web page in your local language.You choose the language in which you want to view the page and the browser translates the content of the page to the language of your choice.I know some of you might already know that it is possible with google translation toolkit.But I was not fully happy with google translation as it is not meant for a common man who knows only his local language.First of all the interface is still in English and the user has to copy paste the URL into the box and do translate to view the translated page.So this is not aimed at a common man who only knows his local language(other than English). What I was thinking about is to have a comprehensive solution which will lead to the idea of a language neutral web. Let me put my thoughts into 5 basic points.

1) Have a browser interface in local language.
Solution :Yes it is already available in some form.For example Firefox have a localization option by which you can change the interface to the language you wish.This is good and satisfies most of my requirements .But still this is just a replacement of English with corresponding local language words and the interface and technical terms is not easy to understand for a man without fundamental computer knowledge.I wish to see such an interface existing.

2)The user should be able to search in his local language.That means a search interface in local language where he can type in his local language and do search.
Solution : Yes this is possible as Google has a option to choose your local language and search in that language.Of course there are many other search engines with same capability.

3) In addition to search results in local language it should also bring the pages in other languages that matches the word user typed in his language and this test results should also be translated and shown in his language .

Solution : This is not currently available with Google search(I assume the same with any other search).

4) When the user clicks on any search results(or may be direct access of the page by typing the url) that web page should be opened and shown translated in his language if it is in a different language.That means any web page the user access should be translated and shown in his language if it is in a different language.
Solution : There are some tools and plug-ins available for Firefox which provides an auto-translate feature.Examples are FoxLingo and Worldwide lexicon. They basically uses Google translation or any other translation services. I found Worldwide lexicon plug-in most suitable as per my requirement but it is bit slow as it takes some time to translate the page stage by stage.

5) The user should be able to type in any web page in his local language and if the original web page is in not in his language the text input should be converted to that language while submitting.
Solution : I know Google transliteration can be used to type in your local language in any web page.But there is no direct way for the automatic conversion of the text in input box to the language of the web page .Of course you can copy paste the text after conversion in an indirect way.

Challenges

1) Some of the contents of the web which are not in textual format cannot be translated.
Eg. Images,flash ,sound and video files.
Also documents embedded or down-loadable from the web should be converted separately for viewing in his local language.

2)Machine translation is not yet 100% correct even though there are efforts from multiple sources to improve this.Also it is available only for few languages right now and developing translation algorithms for all the languages is a challenge.For eg. Google translation services are available only for 57 languages right now.

Benefits

1)The huge benefit I see is in making available huge knowledge base like Wikipedia and other sites to every one irrespective of their language. This is important as local language version of Wikipedia content is very limited compared to that in English and other major languages.This helps very much in education also.
2)The web developers need not worry about localization of their websites and is easy to reach about to a wide range of people using different languages.
3) Most importantly users are not restricted to use the service of any website because the website is in a different language. He will be able to view the site in his language and also will be able to interact in his language.

So is it achievable?

Yes. To a large extend still keeping the challenges in mind(And of course considering only textual data at the moment). Also you can see that among the 5 points only points 3 and 5 is not available as of know(As per my understanding) and that is also achievable with the existing technologies.Only thing which we are lacking is a comprehensive solution integrating all the five points which we discussed and I am sure it is going to happen.I request readers to put your thoughts and also to point out anything which I might have missed out.

Monday, July 5, 2010

DCI -A better OO paradigm?

DCI(Data Context and Interaction) has come up as a paradigm to guide you back to the essence of oo(Object Oriented) programming. Then the natural question is what is wrong in the way we perceive OO now?.Well there are a lot .The main problem is OO is designed to capture the end-users mental model in a computer.Are we really successful in using OO in that way. Definitely not.what we are trying to do is to build software on the four basic pillars(Abstraction,Encapsulation,Inheritance and polymorphism) that we believe as the base of OO design. In addition to that we have identified so may concepts like coupling,cohesion ,design patterns,AO(Aspect oriented)programming,DDD(Domain driven Design) etc. What are we really trying to solve here and why we have these many paradigms?. Please watch this video and you may not get all the points the speaker is trying to explain. Thinking in a different way is always difficult especially in the programming world where we are getting trained to follow the so called best practices and design principles. It is better refresh the mind sometimes ! .I am planning to have a separate post on DCI later, once I get a clear idea on practicing DCI.

Video
http://www.infoq.com/presentations/The-DCI-Architecture
Other References
http://www.artima.com/articles/dci_vision.html
http://blog.jaoo.dk/2009/03/04/handling-architecture-in-the-agile-world/
http://vimeo.com/8235574

Sunday, July 4, 2010

Join twitter and follow great people

Back in 2008 when I heard about twitter I didn't feel anything special and had the feeling that it is not going to make in difference.It was the same feeling some people still have about people that what can you express within 140 characters.I also had the feeling that most of the people using twitter are doing only meaningless chatter without any seriousness.(And it is in fact true as per some analysis). But as twitter became much popular by the beginning of 2009 I thought of just having a try and soon after joining I realized the fact the real value in using twitter comes from choosing the right kind of people and follow them.I know there are some people who thinks how to get maximum no of followers and I have seen many articles on that. But what I want to point out here how I benefited from twitter as a programmer. Also note that I am a budding programmer with just few years of experience and looking forwards to find some great people and make friends with.

If you are some one who is serious about tweeting and want to benefit from that what you should really concentrate is to find the right kind of people to follow. I as a programmer was more interested in programming and technology and I chose great programmers and techies as per my interests.Of course you might have the question how many good programmers are available in twitter. That is right ,it might be very less and you might even think that what is that they are going to tell in 140 characters.So you may think that following their blogs is a better option. Of course following programmer blogs is really great thing and it might be also correct that more programmers blog than tweet . But still you can find many good programmers who tweet actively and the difference between tweets and blog is that you may not blog on everything you come across. But you can tweet on everything you are involved and even though it is very short it might light a spark in your mind or make you to google about some topic. And they usually tweet about their blog post as well as well as other people's blogs which are interesting .Tweets can contains links of the topics they found interesting and there might be retweets of other people which are interesting. In that way you are in fact finding a bunch of people around a the topics you are interested with and can share your ideas as well. Don't you think this is much more than blogging and just following blogs.

Coming to people who may follow you it is very important for people to understand what you more interested in from your tweets. This will help to attract the right kind of people who you can really interact with. If you want some great programmers you are following to follow you also it is important that you tweet more about programming.If you are a person who are a frequent twitter user and tweet about almost everything I suggest have a separate account for more personal tweets. Making friends with some great programmers is really great ,but do it carefully and step by step by understanding the person and they shouldn't feel like a nuisance initially. I personally benefited a lot by joining twitter and following great programmers.So if you are someone still hesitant about joining twitter, break that notion, have a try and experience the difference.

Saturday, April 10, 2010

Four trends that developers have to concieve for the next decade

Past two decades were very exciting and important for software developers and we saw web(www) emerging as a dominant platform for computation and communication.We also witnessed different trends like distributed computing and service orientation gaining popularity.Looking at recent years I am pointing to four exciting developments that is going to challenge the developer of the next decade.

Cloud
Cloud is going to redefine the traditional software development platform.Here are some points.

1) Abstraction over Deployment platform
Developer is abstracted from the platform(hardware,OS,Server etc) where the application is going to be running. But he need to be aware of the Cloud provider's platform .Since everything is available as per "pay per use" policy applications needs to be optimized to use less resources as possible.
2) Abstraction over data storage and usage
Since data will be available as services ,he need not be bothered about the underlying implementation,but only needs to know the API's to retrieve the data from the service provider.Scalability will also be addressed by the provider
3) Changes in traditional software development life cycle
The development life-cycle for the cloud is going to be different from traditional one.The builds and releases should be aligned to the targeted cloud platform
4) Security and Dependency on specific cloud platforms
These are contentious issues that developer have to be aware of and the design should be optimized to minimize any impacts.Security in the cloud is different from the traditional environments and no standards have been evolved right now.The applications should be developed in such a way that it should be easy to switch to a different cloud provider if needed.

Emergence of multiple platforms

PC is no more the dominant platform for applications in the coming age.Alternate platforms like Mobile and other hand-held devices like Ipad,e-readers etc are also becoming much more popular.For eg. Iphone and Android have already become popular platform for developers.It is becoming more important that applications should be made available in multiple platforms to reach out to more users.So it is time for developers to gain understanding of multiple platforms.

No Sql Alternatives


The dominance of RDBMS is getting challenged and everyone in the industry is getting the understanding that RDBMS as a one size fit for all is not a good idea. RDBMS is designed with ACID compliance as a principle ,but not all the real systems need full ACID compliance and also have problems to address like performance ,scalability and availability.So alternate implementations gained attention in recent times and many companies are moving to a better no-sql alternative which suites their application domain.

Functional Programming

Fuctional programming(FP) is gaining more importance as better paradigm for concurrent applications. Due to the emergence of multicore processors it become the duty of applications to be more concurrent to make maximum use of multiple cores.FP also helps programmers to code in higher level of abstraction and helps to reduce duplication of algorithms and in program correctness. Mainstream languages are adopting functional programming features like closures,functions as first class objects and immutability . Languages like ruby,python,C# has already adopted many of these features and new languages like scala,F#,Clojure have come up with strong functional programming support.

Sunday, March 21, 2010

Scala and Java interoperability

//ScalaClass.scala

class ScalaClass (val creater:String){
override def toString
="I am ScalaClass created by "+creater
}

//CallScala.java
//This java class uses ScalaClass

public class CallScala {
public static void main(String[] args) {
ScalaClass scalaClass
= new ScalaClass("Java");
System.out.println("Calling scala from java");
System.out.println(scalaClass);
}

public void pingMeFromScala(){
System.out.println("Hey scala pinged me");
}

}

//CallJava.scala
//This scala class uses the java class CallScala

object CallJava
{
def main
(args:Array[String]){
val callScala
= new CallScala
callScala
.pingMeFromScala
}
}


#Steps

1)scalac ScalaClass.scala

2)javac CallScala.java

3)scalac CallJava.scala

//Include scala-library.jar in classpath if you are usinf a scala class in java
4)java -cp /home/byju/scala-2.8.0.Beta1/lib/scala-library.jar:. CallScala

// You can use scala to run a java class
5)scala CallScala

6)scala CallJava
// You can use java to run a scala class by including scala-library.jar in classpath

7)java -cp /home/byju/scala-2.8.0.Beta1/lib/scala-library.jar:. CallJava

Sunday, February 28, 2010

Floating around the cloud for one day - CloudCamp ,Bangalore

I attended the Bangalore CloudCamp that happened on 28th Feb 2010.In contrast to what I thought about it didn't take much time to find and reach the place (Dayananda Sagar Institutions,Kumaraswamy Layout) and the turn around of large no of attendees was also above my expectation.I saw lot of guys actively looking for what is happening in and around the cloud and how it is going to change the IT atmosphere.This has to be looked into when there are opinions from many corners that cloud is going to be another big hype rather than reality (a cloud without rain !).I assume there were around 200 no of attendees.

Talking about the sessions,it was a meet-up along with Hadoop summit organised by yahoo.being a developer I have the opinion that large conference add less value to the developer than small meet-ups.Organised conferences have a pre-planned set of talks and in that they will try to pour in everything within few minutes of time.It might help to get a broad overview about some topic and will especially help business guys to get a advertisement also.Whereas small meet-ups are developer friendly and you have more freedom and time to spend and space for participation.

Talking in this context the lightning sessions which grabbed most of the morning time was mainly a waste of time for me.But I understand it from the organiser's perspective that they have no choice as to support the sponsors. It all started with the un-conferencing session were some panellists chosen from the audience answered questions from audience and based on interest for a particular topic un-conference sessions were chosen.This was special with active participation of attendees.The un-conferencing sessions were scheduled parallel to the hadoop sessions in the afternoon in three separate classrooms and there was lunch break.

There were 9 un-conference sessions altogether.Let me list down them .

1) Intro to cloud computing
2) Session on Windows azure
3) Data management in cloud
4) Business models on cloud
5) Security in cloud
6) Apache mahout session
7) Google app-engine session
8) SDLC for cloud
9) Databases in cloud

I wanted to understand hadoop and at the same time interested in some un-conferencing sessions also and I have to schedule my time effectively as they are going in parallel.Finally I decided to attend the Apache Mahout session only in un-conference as it felt something interesting for me.Apache mahout is a Machine Learning software built on top of hadoop and lucence .Although I missed some initial hadoop sessions because of this mahout session was worth attending and Robin done a good job by presenting it in more effective way.

When I moved to hadoop after the Mahout session the initial sessions were over and there were not much interesting afterwards as it was more about QA and performance tuning and one session from professor from PSG college on how they used hadoop in their research.I appreciate the collaboration from the industry and academia in this area and have the opinion that that is one of the are India have to improve upon.The event was sponsored by Yahoo and Microsoft and it is great to see the commitment of yahoo in Hadoop open source project and yahoo proved that hadoop is worth and production ready as they are already running hadoop in more than 30000 nodes as the back-end of their web application infrastructure.Bear with me if I am biased being an open source advocate,but Microsoft's participation was targeted for their advertisement rather than interest in community and they tried to utilize it very well.The final panel discussion with industry pioneers had very short and so couldn't raise to the expectation .Even though there were some good thoughts and good participation from audience.

In summary it was a great effort to boost the community around the cloud in India and Prem did a good job in organising this and Dave Nielsen as cool and jovial guy managed sessions very well.Overall it was very particular with active participation of the cloud community in India.

Tuesday, February 16, 2010

Web resources in Mathematics

Being a mathematics graduate I have a passion for mathematics and I am always fascinated by its beauty.Nevertheless I am interested in history of science and mathematics and computer science in particular and whenever I come to know any related web resource I will bookmark that.I discovered Diigo few months ago and it was the kind of tool I was looking for and I moved all my bookmarks from google to Diigo. In addition to just bookmarking it archives the pages bookmarked and it will be helpful if it gets lost in future(and it is very common).Also it is claimed to be a researcher's tool as it has facility to arrange items and highlight information ,share items with others etc.I suggest every one to try Diigo once.Coming back to mathematics I am listing below some links which will be interesting for any maths lover.

1) Wikipedia mathematics portal
Of cource wikipedia is the number one source for any topic.
2) Planet maths
Planet maths is an encyclopaedia for mathematics.It has article on almost every subject and it is reviewed by members. Each topic is owned by one member and so it will be more authentic and accurate.

3)Wolfram Math world and wolfram alpha online
Math world has rich set of details about almost all the branch of mathematics. Wolfram alpha knowledge engine uses mathematica software which helps you to compute so many mathematical functions online quickly.It is a powerful tool for mathematics students and teachers.
4) MacTutor History of Mathematics archive
The MacTutor History of Mathematics archive is the largest source of information in the web about the history of mathematics and also about mathematicians.
5)cut the knot
contains interesting mathematics puzzles and introduction to mathematics topics and problems
6)Springer encyclopaedia of mathematics
Springer encyclopaedia of mathematics acts as a quick reference for mathematics topics available with an index.
7)MIT open courseware
MIT open courseware from MIT is the largest source of learning materials on any subject .
8)Math forum
The Math Forum is a leading center for mathematics and mathematics education on the Internet.It has a lot of resources and links for learning and teaching mathematics.
9)Internet encyclopedia of philosophy
Internet encyclopedia of philosophy has a section about mathematics and logic which is helpful to understand the foundations and philosophy of mathematics.
10)Prime pages
Prime pages has lot of information about prime number research an interesting field in number theory.
11)Gresham college lectures in mathematics
A lot of interesting lectures in mathematics.I found these very interesting and informative.
12)The Math Open Reference Project
A free interactive math textbook on the web. Initially covering high-school geometry.
13)visualmathlearning.com
Understanding Mathematics through Insight, Concept, and Perception
14)math-atlas.org
Introductory articles on almost all the branches of mathematics.
15)NRICH
NRICH is a team of qualified teachers who are also practitioners in RICH mathematical thinking.NRICH aims to Enrich the experience of the mathematics curriculum for all learners.

I hope these links will be useful for all mathematics lovers seeking for resources and reference in web.