Moved

I have put down my experience of moving from WordPress.com to my new home. Overall it was not very difficult, at most irritating sometimes. The WordPress exporters and importers do most of the work, you have to follow it up with some cleaning.

I am going to keep writing on this blog, less frequently though. I will also change the sidebar content a bit to reflect fresh content from my new blog. If you have sill not update all your bookmarks using this information. I am still not getting used to not seeing WordPress.com top posts in the dashboard. I will try and see if I can hack it to do it. I realise the importance of being part of a community!

Technorati tags:

Copyright Abhijit Nadgouda.

Posted in this. 2 Comments »

Moved, But Still Unpacking

So this blog has found its new home! It is hosted on BlueHost, selected out of three that I was considering.

Basic setup of the blog is done – posts, pages and comments imported, and functional theme is set. However, it is just that – functional right now. I still have to import links. I will need some more time to fix some things and make sure that the CSS is not bulky or bundled up. I will write a detailed post on things I had to do to move things from here.

That being said, you can take a look at the blog today and see if you like it. Feel free to throw brickbats or if you feel, bouquets at it.

Please update your bookmarks, blogrolls and feeds to the following addresses:

Blog address: http://ifacethoughts.net/
Blog posts feed: http://feeds.feedburner.com/ifacethoughts/entries
Blog comments feed: http://feeds.feedburner.com/ifacethoughts/comments

I know it is too much trouble to update these thing and I sincerely wish that I could automate this for you. But it is not happening, please take the trouble of updating the information. I will writing at the new blog. I plan to keep writing on this blog to write specifically about wordpress.com, and keep using the excellent and first-to-be-updated blog system here.

I will do one more post when the new home is completely setup and will include a reminder in that. Thanks for reading.

Technorati tags: , .

Copyright Abhijit Nadgouda.

Posted in this. 2 Comments »

To Move Or Not To Move

I am contemplating moving to a self-hosted blog. Not because WordPress.com falls short of anything, just that I have become greedier. I want to control more and want to experiment more.

I will definitely continue with WordPress. It has achieved the privileged milestone of one million downloads and is coming up with some dynamic features. WordPress.com too has seen massive growth, it hosts 310 thousand blogs on its first birthday. WordPress.com has time and again shown that it is one of the highest quality blogging sites, with lot of high traffic and slashdottable blogs.

I want to dig deeper now, get more control and start some experiments. The new avataar will also host some projects and some personal stuff. After some research I have narrowed down to bluehost.com, dreamhost.com and mediatemple.net for hosting with a bias towards bluehost. Feel free to suggest if you have any information regarding this. I am looking at PHP, Ruby and Python support. Any kind of guidance will be appreciated.

I am trying to evaluate the costs of moving, some are apparent and I am sure some will raise their head later. Right now though, none of the disadvantages are heavy enough to outweigh the basic advantage of being able to do more with self-hosted WordPress for me.

Technorati tags: , , ,

Copyright Abhijit Nadgouda.

Solutions Through Open Source Is The Solution For Open Source

Eric Raymond, who re-invented, or rather founded the open source movement, warned the community against open source losing its users. Participating in a panel at LinuxWorld, ESR called for compromising to appeal and be useful to the newer generation. He used Linux, the pioneer in open source world, to exemplify where open source was lagging.

Raymond, a champion of all things open, said it is vital to the future uptake of Linux that the community compromise to win the new generation of non-technical users aged younger than 30. This group is more interested in having Linux “just work” on their iPod or MP3 player and “don’t care about our notions of doctrinal purity”,

“We have a serious problem. Whenever I try to pitch Linux to anyone under 30, the question I get is: ‘Will it work with my iPod?,” he said. “We are not yet as a community making the painful compromises need to achieve widespread desktop market share. Until we do, we will get locked out of more hardware.”

Using proprietary and closed source binary drivers has been a controversial topic for Linux. These binaries, without their source code, fall in the opposition party and are immediately rejected. However, it cannot be ignored that they provide value today to the users. To be able to useful to these users, who want their computers to work with different gadgets, Linux should make a compromise and include them. He calls them necessary evil.

Users require Solutions

I think this compromise is just a small hurdle in the path. To be able to be accepted by the common man, especially the newer generation, open source should offer solutions to them. Open source has mostly been the object of fascination for the geeks and the object of ideology for the believers. However, now it has to move out of this and enter the realm of everyday use of the common man.

The challenge is that requirements of the common man will keep changing. A decade back he wanted a decent browser, today he wants the computer to work with other gadgets, tomorrow it can be used even in trivial tasks. For this open source has to do two things:

  • Provide solutions rather than open source flagship products
  • Talk to the common man

To be able to do this open source movement should graduate from just competing with the proprietary counterparts to actually identify and solve the user’s problems. Unless this is done it is not going to be popular, it will be seen only on the desks of geeks. To address problems and issues of the users open source has to provide direct value and use their language. It should not be used only to scratch the technical itch any more, it should satisfy the wants of the non-technical. And on the way, the open source movement might have to do compromises. Linus Torvalds, the creator of Linux, thinks software patents and legalities are harmful to the open source movement. It definitely is, but I think identifying and delivering value to the user is more challenging and imminent. What I understand from Eric’s message is that open source can neither postpone nor slow down being useful and reaching the common man. It is time, or else it might get locked out!

Technorati tags: , ,

Copyright Abhijit Nadgouda.

*OA – The Different Web Programming Paradigms

Update: A Spanish translation of this post is available, thanks to Adrián Moreno Peña.

Web has been the apex of networking, both from software and social perspective. The extreme software networking has turned Web into communication, social networking, collaboration, publishing platform as media and application programming platform. However, as mentioned earlier, Web was originally designed for documents as a way of information sharing. To be able to do what we wanted to do with Web, we had to make it programmable.

Programming The Web

The Web today is programmable. It can be programmed for various purposes, some of which we have mentioned in the beginning. This programmability is derived from the mature generic software programming principles. We need to have an architecture, a design and an implementation. The generic software programming has evolved through a lot of changes, some of which can qualify as improvements. From the programming styles like procedural programming the focus has moved on to architecture and design to produce techniques like OOP and the new Agile and Model Driven Architectures. On similar lines today the Web is full of upcoming architectures and approaches. Lets mull over some of them here.

Services

The concept of service was created to emphasize on loose coupling and a client-server relationship. The pre-Web software was usually tied to the hardware and the associated platforms. Web, being so open and ubiquitous, cannot afford to do that. Web was meant for sharing, irrespective of these restrictions. Hence came up the concept of service. A service is a function with a purpose, serves all the clients without any restriction on their implementation details.

Service Oriented Architecture (SOA)

Such collection of services were exposed that the clients could avail of and termed as Service Oriented Architecture (SOA). These services communicated with each other, some collaborated and some were standalone.

To be able to do a handshake, the clients had to obey the protocols mentioned by the service. These most popular ones were XML-RPC, SOAP. They focused on abstracting Web for applications and domains. A different approach was taken with REST which focused on using the Web as it is, by following its basic principles.

The advantage of SOA was that now businesses could choose between services without being hindered by technology or organizational boundary. Neither the definition nor the specifications of SOA were limited or dependent on Web. SOA could allow interesting mashups and integrations. SaaS is completely based on this and has been able to bring analogical outsourcing concept in businesses.

However, there are some key disadvantages of this approach. The biggest being that in an effort to be platform agnostic and portable, SOA is buried under a load of specifications. Increasingly it is getting difficult and costly to be able to comply with the protocols and talk to a service. Another disadvantage, which need not be severe sometimes, is that the services are not discoverable. Knowledge of the services is required to be able to use the service which mandates a directory of services. Since Web is boundless by nature, it is impossible to keep such a directory. This makes SOA less reachable.

Web Oriented Architecture (WOA)

To make SOA lighter and more popular came WOA. It is essentially a subset of SOA which recommends using REST over heavier counterparts like SOAP. The philosophy of REST to differentiate between network programming and desktop programming makes it simpler to use for the former.

WOA is more customized for Web by including REST. And by specializing it can strip off the heavy abstractions that make you all-inclusive.

Resource Oriented Architecture (ROA)

Here comes a radical approach, well, radical from the SOA perspective. Alex Bunardzic introduced ROA. While WOA is conceptually still SOA, ROA is a rebel for a good reason. Alex points out that the concept of services might not apply to the Web. As mentioned earlier, services cannot be discovered and it is not possible to maintain a catalog. This is where it goes against the Web, ROA believes that Web is exploratory by nature.

Because of the uniqueness of the web as a medium, the only abstraction that does it true justice is resource. The web is a collection of resources. These resources are astronomically diverse, and it would be mathematically impossible to maintain any semblance of a reasonable inventory of web resources.

Each resource on the web, no matter how unique and complicated it may be, obeys only one protocol. This protocol has three major aspects to it. In no particular order, these aspect are:

  1. Each resource knows how to represent itself to the consumer
  2. Each resource knows how to make a transition from one state to another state
  3. Each resource knows how to self-destruction

ROA is more of a paradigm than an architectural approach thats considers resources to be the elements of Web. The key part however, is that they can be discovered, and once they are discovered they can represent themselves. There is no requirement of prior knowledge of the resource to start a conversation, as against knowing capabilities of a service in SOA. ROA is completely based on REST and basks in its advantages – simplicity, minimal technical requirements and URI for every resource. The use of the basic elements of the original WWW makes it easy for a resource to talk to another resource.

The only disadvantage I see of ROA is that it is well defined for Web. Although there can be analogical implementations in other areas, like SOA it is not conceptualized on non-Web platforms. There are new developments happening in this area, but it is still not as mature as SOA.

Epilogue

If analyzed, all these focus on having a standardized interface. ROA is simpler than SOA and uses the hyperlinks effectively to reach a wider base. But whether that is a requirement will be determined by the business need.

As a software developer what is in store for me in all this? Well, these paradigms are about to define the direction in which Web programming will head in the future. The one that dominates will survive. However to be dominant it will have to prove itself to be loyal to Web and loyal to businesses. If both co-exist, it will be critical to identify applicability of each of these. If not, then there will have to be preparations to handle its disadvantages. Either way, these will affect the businesses in which they are being used. And with Web playing a very important role today, this impact will not be ignorable!

More readings on this:

Technorati tags: , , , , , ,

Copyright Abhijit Nadgouda.

Posted in design, web. 2 Comments »

Should The Web REST Its Case?

Today the Web is being treated as an application and messaging platform, as a publishing platform and as a medium. However, the initial intent and hence the design of Web was to host documents and make them available to everyone. Here is an excerpt from the summary of World Wide Web by Tim Berners-Lee:

The WWW world consists of documents, and links. Indexes are special documents which, rather than being read, may be searched. The result of such a search is another (“virtual”) document containing links to the documents found. A simple protocol (“HTTP”) is used to allow a browser program to request a keyword search by a remote information server.

The web contains documents in many formats. Those documents which are hypertext, (real or virtual) contain links to other documents, or places within documents. All documents, whether real, virtual or indexes, look similar to the reader and are contained within the same addressing scheme.

In a nutshell, the Web was intended for documents so that information can be shared. The design of the Web and underlying techniques like the HyperText Transmission Protocol (HTTP) and HTML target these hyperlinked documents and exclude the modern connotations.

Protocols

SOAP and XML-RPC

To be able to do more with the Web, a layer of abstraction was introduced. This layer introduced new protocols and data structure formats and new rules to abide by. XML-RPC is a product of this attempt and later evolved into SOAP to handle enterprise scenarios. Lets club both of them together for our purpose. The purpose of these protocols was to ensure communication between disparate machines with disparate platforms with disparate programming environments. That they did to the fullest extent. The utilities were offered as services, which the clients could use by requesting using the protocols. SOAP has now evolved to get more and more inclusive and stricter and tedious. A lot of specifications were developed which caused the effort and the cost of being able to use a service to climb up.

There are two problems with SOAP. One was that as Web was being used for all kinds of things, a lot of which were not enterprise or corporate. SOAP started getting oversized and bulky for them. Secondly, SOAP uses POST method of HTTP. (HTTP provides two commonly used methods – GET and POST. GET lets you retrieve information and provides a Uniform Resource Identifier (URI) for that. This URI can be used as an identifier for that information or resource. For using POST, a package has to be sent to the web server, a simple URI does not work.) Using POST meant SOAP had to do away with the URI and the associated basic benefits of simplicity, convenience and caching.

REST

So came in a new perspective REST – Representational State Transfer. REST, coined by Roy Fielding in Architectural Styles and the Design of Networkd-based Software Architectures takes an approach contrary to SOAP. Instead of building over the basics of Web, it tries to optimise it as it is. It uses GET to request information, and idetnfiies every single resource with a URI. This URI can now be used by anyone anywhere, a simple string that can identify and locate a resource on the Web. Not additional protocols other than HTTP and use the URIs that form the hyperlinks. Keep it simple and keep it accessible, very much goes with the ideology behind the WWW summary.

With the emergence of Web 2.0, there was search for an easier and open paradigm for using Web, which was found in REST. I am with REST for now. However I am not sure if it will be an over simplification for some problems. Only time will tell!

The RSS Blog has a good illustration of all the three protocols. I sometimes wonder if a combination of these protocols would provide a better solution in some cases. A lot of discussions end up in flaming and finger pointing. However there are some good thoughts on these:

Non-participation by W3C

It would be better if the World Wide Web Consortium (W3C) participates in creation of these paradigms and protocols. W3C is the authority and can play the role of keeping the integrity of basic principles of Web. Existence of multiple protocols is a bigger problem than just development inconvenience. It can divide the Web into incompatible parts which will ultimately be the failure of WWW.

Technorati tags: , , , , ,

Copyright Abhijit Nadgouda.

Posted in design, web. 3 Comments »

month

Just like weekday, WordPress uses month global variable to store the month names. It is a single dimensional array set in [wordpress root folder/wp-includes/locale.php]. It stores the localized values of the month names.

Plugin and theme developers can access this global variable, however, to retrieve time and date information about posts within a loop the functions mentioned in weekday can be used.

Back to full list of global variables.

Technorati tags:

Blogger Upgrade

Blogger (from Google) is redesigned and with it goes static publishing. Like Matt says, whatever happened to the static publishing pros. I think with this change, it should probably read Blogger is reborn.

For starters, static publishing is a way of exporting the post to HTML. A post when published, is processed, the HTML is composed and is saved as a page to be ready to be served. This was considered better as serving ready and composed pages did not go through the web server processing and increased performance. The lopside to this was that it was, for lack of a better word, static, which does not fit very well with today’s dynamic web. If there was a change, the post had to re-exported to HTML. Think of a change, like change in the sidebar or layout or design, that will affect all the posts and think of the trouble of republishing all of the posts. For all the ease that Blogger said it had, the user had to know when to republish all the posts, which actually can eat up lot of your time. This was a fundamental difference between WordPress and Blogger. Well, now its gone.

Another concept Blogger has embraced is the tags, or labels as they call it! It is very close to categories in WordPress. This will definitely bring in better navigation and better tagging for the users. However, the dilemma for lot of users would be whether to tag the existing posts done using the old blogger. If not, the tags will miss a lot of posts and not serve as good navigation.

Along with this, the hosted service, Blogspot.com will gradually get all these features.

Movable Type still supports static publishing. It does support a dynamic workaround, but it is strongly discouraged as a host of third party plugins don’t work in the dynamic mode.

Now that Blogger has got the new face it will be interesting to see if the demographics change. The existing loyalists would probably not leave, but new bloggers will have to compare a little more between the different blogging tools as the gaps between them is reducing.

More on this:

Technorati tags: , ,

Copyright Abhijit Nadgouda.

Open Source And Wikipedia (Or About F/OSS)

Ethan Zuckerman has a report on the discussion about What can Wikipedia learn from F/OSS. For some reason, the discussions seems to be more about comparisons between the two. In my opinion, the better way would have been to look at merits of one and try to incorporate in the other – if the aim was to learn from.

Ethan ends up by saying that it is unfair to compare F/OSS and Wikipedia since they have different ages. I agree, but for a different reason. I wonder if we are trying to compare the two on different planes. F/OSS is about software and hence ideas, Wikipedia is about organizing information and facts. The common factor is the openness for contribution, but nowhere do I see any level for comparison between software and facts. The inherent nature of software is to be able to prove one’s idea, one’s philosophy, one’s opinion. This cannot be true for facts, whether majority of the people agree or not, gold is a metal and homosapiens are animals. The power of open source software is the ability to do something on my own and then open it to others so that they can use it, build on it, modify it or better it. The ability to keep an open mind to suggestions from others is productive, and F/OSS makes it quickly possible. Open source in software development is about a strong belief in an idea, listening to others, gathering opinions, requirements or feedbacks. Open source in facts can is about contributing the right fact or correcting a wrong one. Isn’t the comparison between F/OSS and Wikipedia inherently handicapped because of what they are about – ideas and facts? What about the wiki software used to build Wikipedia itself?

Nicholas Carr takes the discussion in a different direction. I agree with him in the sense that open source does not Open source as a metaphor will fail, if appropriate context is not used. Open source is the nature of building, however, the details will be dependent on what we are building. So, using open source as a metaphor without any context will sound meaningless.

However, what can be common between F/OSS and Wikipedia is the basic advantage of open source. Opening up a pool of talent, much wider and much deeper. This source is not available in the proprietary or closed source environment. The primary reason is that closed source does not express well enough to invite participation, and open source uses the best tool – the code. Not only this it encourages the amateurs, experts, newbies and veterans all alike to share their code and express and connect across a farm of developers. I like what Assaf says in response to Nick’s post:

The thing is, open source is not a community. Or a movement. Or disruptive. Open source is code that’s available to the public. Nothing more nothing less.

Some of it has communities. Some of it has business models. It’s the side effect of it all that makes a difference.

If you want to understand open source, you need to stop reading InfoWorld and take a look at SourceForge. Pick a hundred projects at random and see what they’re about. Most are developed by one person writing the code, maybe a few people using it, often not even a thank you note.

What Wikipedia can learn from F/OSS is probably the way it has been able to harness the interested individuals to come up with a unified goal. I think Wikipedia is already on its way!

Technorati tags: , ,

Copyright Abhijit Nadgouda.

Treat Your Customer As A Business

This is an attempt at making requirements elicitation more efficient and to help get the bigger picture. Software, whether it is explicitly said or not, makes an impact on the business it is being used in. Value of the software is driven by that magic number provided by the Return On Investment (ROI). So, even if the customer is an individual treat him/her as a business. This can bring out the standing and significance of the software in the business.

What business are we talking about?

A software is typically looked at as a solution to a problem. This problem lies in its own problem domain which lies in the business. The business involves much more than your customer. It involves your customer’s customers, your customer’s vendors, shareholders, other stakeholders and of course your customer’s competitors. A business also plays are role in the entire supply chain. A business interacts with its customers, interacts with other businesses, probably with customers of its competitors. A business is a system with other subsystems in it, in which people are involved. Any software, whatever its scope, used in any part of any subsystem has the potential of making an impact on the entire system and eventually making an impact on the supply chain. If the software does not make a difference to the entire system, then why invest in it? Accounting department of a company can want an accounting software. But if using it does not affect the business of the company, is it really useful? Meaning of usefullness can change when you consider this business.

The business gets its ROI only when it can leverage the software to improve its standing in the entire supply chain. This can be direct or indirect. This business is a different animal than your customer. It is affected by more factors, it runs under more restrictions and it also affects more factors. To be able to get a handle on these factors, it is imperative to understand and treat your customer as a business.

What factors are we talking about?

Business, being a generic term, lets look at its generic factors.

Localized Optimization

The software affects the peripheral businesses or subsystems, along with the problem it is supposed to solve. A manufacturing unit can improve efficiency of the production department, however, this efficiency affect the business only if it propagates through the delivery systems. Sometimes, an improved production department can stock up the inventory system which can turn into a cost centre. The production efficiency is also only as good as the efficiency of the business providing the raw materials. If this is realised earlier in the stage appropriate solutions can be identified for the possible problems caused by localized optimization.

The real benefit lies in overal optimization, which looks at the bigger picture and finds solution in the bigger picture. This factor can help us in tying features of the software to benefits to the business, without the middlemen of departments or localized cells. Somehwere there also lies the answer for ROI.

Current Investment

A business inherently involves people. With people come their skillsets, their ability to learn and their questions. Software is not only about development, it is also about training, it is about making the users use the software in a right way. This can happen only if their skillsets are considered. The business perspective highlights this factor which is missed a lot of times.

People are a form of current investments. There can be many others like using existing real estate, expertise and even softwares. A software initiative can consider to use them instead of requiring new investments.

Growth and Dynamics

A business wants to grow, wants to scale up, wants to do more things. The software should not be an impediment. There is no way of predicting future requirements, but the software design can include provisions for growth and scalability. Website for a newspaper, that has a thousand readers today, but expects five thousand in future, should be able to handle this scalability. An overhaul of the website for this purpose can turn about to be too expensive. This can be achieved by querying the roadmap or vision or goals of the business.

Restrictions

Last but not the least, a business operates under a variety of restrictions. Timelines, financial budgets and even the market trends factor into the various tasks that a business carries out. These restrictions percolate to the software initiative. Eventually, each of the restrictions on the software project are born out of some real-life business restriction. This realization can help us understand the impact of breaking any one of them. It can make us look for a better solution that can comply with all the restrictions. If complying with all is not possible, it can at least give us time to prepare for the eventuality.

Still Be Personal

Treating the customer as a business sounds impersonal. Being personal does not mean involving personal problems, but giving personal attention to the customer. Labelling the customer in a category of other customers and giving a generic treatment is impersonal. Every customer, every business and every project is different. Realizing this, treating them different and giving them personalized solutions is being personal, and this can happen only when you can deliver something that brings in positive results for the entire business. And this can happen only when you treat your customer, not as an individual, not as a group, but as a business.

Technorati tags:

Copyright Abhijit Nadgouda.

Follow

Get every new post delivered to your Inbox.