31 January 2007 - 20:42I never thought I would do this but…

I’m about to write a post about the internet in .ro
What prompted me to write this post is quite unusual, I listened to a podcast on podio dot ro (do not click this link, type it in your browser) about the typical Romanian internet user. I say that this reason is unusual because I usually keep clear of the guys behind podio and the large crowd of wanna-be’s that hangs out around them. I do this because I have not seen any content worth consuming from them, they keep themselves busy mostly by throwing around English words - such as publishing online, publisher, advertising online, shuttle, Country Manager (I’m copy-and-pasting from one of these guys’ ROMANIAN blog, it cracks me up, this guy is worse than Borat) - which in Romanian sound pretty funny.

Anyway, one guy made an interesting remark about the typical Romanian internet user, it said that you cannot offer something to this user because its internet use if very limited, it resumes to browsing some sports online papers, photos of scantily dressed girls. This guy’s beef was that this type of user holds the Romanian internet industry (yeah, apparently there is such a thing) down because the feature set this user demands is so poor it cannot support an industry. There was some copious discussion about “how to mature such an user” (LOL) so that “it goes from forums to reading/writing blogs” (ROTFL).
Guys, you are beating the wrong horse. The reduced feature set is another example of the rampant poverty in that country. The Romanian society lives pretty much on 2 tiers (tiers which, BTW, have some conflicts from time to time): a small tier placed in the middle-class-to-upper-middle-class income bracket and a very large tier placed in the next-to-or-below-the-official-poverty-level income bracket. As your industry is a service to the whole society it follows quite logically that your main customers will come from the second tier. These guys are pretty much satisfied with what they have right now (i.e. downloading photos of soccer players partying like there is no tommorow) and they do not care much about putting up the photos of the stray dogs parked in front of their appartment blocks on flickr or develop social networks, or God knows what else.

If I were one of the guys on podio I would focus on providing a service to a Westerner, it simply has some more money and probably demands a lot more. The demands of the average Romanian user will probably raise along with its standard of living, while I wish its standard of living go up I wouldn’t hold my breath.

P.S. I also noticed one more thing about the podio guys. They really like to talk about sums of money involving 7 to 8 figures (euros, of course). I wonder what is like to listen to this podcast from a non-descript appartment where every utility bill comes as a knock-out blow. Surreal.

No Comments | Tags: IT in S-E Europe

30 January 2007 - 20:30Tagging

Tagging is pretty much synonimous with Web 2.0 and collaboration. It seems to pop-up all-over the place: you tag movies, posts, your bookmarks on del.icio.us, etc… I think it is pretty popular because it requires minimal input from the user: just give us 2, 3 words about this page and we will take it from here. In today’s fast-paced world you cannot ask a user to provide significant input, it simply doesn’t have the time. You also do not have the resources to process this significant input, because processing it would require human readers, rather than software and these readers cost a lot. Another reason why tagging is popular is that it is also good for categorizing because it is a way of categorizing an item AFTER you have consumed it and not BEFORE, as a result you could argue that it splits items into bins a lot better than setting up rigid categories up-front.

But this flexibility has an ugly reverse: the low signal-to-noise ratio which comes from many people using the same tags for tagging very different items. There are 40,000 words in the English language which you could use for tags and a probably a dozen million web-pages which are tagged in del.icio.us (del.icio.us hit 1 million users sometime ago, I assume each of them has at least 10 tagged items). Do you think that tagging can scale meaningfully at this level? You will try to apply various algorithms in order to differentiate the items being tagged (number of tags, frequency, time, etc…) but at the end of the day you will end up with very large datasets which need to be processed MANUALLY.

Which brings me to the next problem: the huge cost with false-positives: in order to register a false-positive (a page that has been tagged incorrectly and that doesn’t service your needs) you need to consume the information, to read it, and this takes usually a lot of time.
I gave up long time ago to retrieve good information by navigating my del.icio.us tags and trying to find common things with other people, the amount of information that I have to READ (which is a very expensive process) in order to find something worthwhile is ridiculous. I find that it is a lot more effective to keep reading from good sources of information in order to get an understanding of a new field rather than data-mine del.icio.us for my needs. It takes more time, but it is a lot less expensive.

One last problem with tagging is that it is a level playing field: a developer with 2 years of experience ranks on the same level as a someone who worked in, let’s say, transaction management for the last 15 years. If both of them tag different pages with the tag ‘transaction-management’ which one do you think is the page that better reflects the tag? Actually, let me re-phrase that: which page reflects the tag better for who? The pages tagged by the transaction-management specialist will probably be useful for someone working with high-level transactions and working on transaction propagation, while the pages tagged by the junior developer will be useful for another junior developer starting to learn about ACID. You could say that tagging works best in a homogenous environment where everybody expects pretty similar results from the same tag.

Tagging has been with us for a while, but so far it is used for pretty simple associations. I’m still waiting for the “wow” moment…

No Comments | Tags: Miscellaneous

27 January 2007 - 21:14REST and WS - part 2

I wrote a while ago a post about the differences between REST and WS. I’d like to re-visit this issue today.
I like REST conceptually, but I find it too crude. It revolves around 3 or 4 very simple operations which, its proponents claim, scale at the size of the Internet. Well, you can do pretty much everything with these simple operations, it is the value which is added to these simple operations (how you mix them up) that really matters. The packages coming out of these simple operations should scale, not the operations themselves. It is disingenious to claim that you can do everything with these operations, you can do exactly the same thing if you code in binary, but I have not seen many people advocating this for a while (even though they probably were quite a few when the compilers appeared ;-)).

The lack of standardization in REST has some subtle side-effects, one of them being, of course, the fact that you have to work extra hours because in REST you have to code by hand the interaction with a different party. In WS you can look up the webservice, invoke a code generator and immediately generate the connection to that WS, in about 15 seconds you are ready to communicate with the other party. In REST you usually get a spec highliting the URLs which serve as entry points into the other system from which you derive the communication schema and you will go off to implement it. I am sure that quite a few REST developers out there have built their own generators for building the connection with a REST-enabled endpoint, but not everyone is proficient in such tasks. WS seriously beats REST when it comes to ease of use.

I like from REST the fact that the URLs can act as a level of indirection which in turn makes customization a lot easier. Small example: user A and user B use the same URLs from the same REST service, but user A has a platinum account while user B has the bronze account. Well, the application could serve more/better data to user A (more search results for example) thru the same URL by looking up the user’s account and making up all sort of decisions. In WS you cannot do this right now, you do not have the concept of a session yet (even if WS-Conversation is being spec-ed out) and the most implementations map a class or session bean to an end point and not the other way around (you need the endpoint mapped to a process easily and not vice-versa in order for that endpoint to become a level of indirection). The good thing about WS is that when this conversational feature will get implemented it will get implemented transparently.
One bad thing about WS is the fact that it seems to have set its mind on spec-ing out every conceivable form of communication. The spec is starting to mushroom and is being stretched in any conceivable direction in order to cover every God-forsaken issue. This is obviously a problem, but I think the market will solve it. It is a pretty simple case of supply and demand: if an issue has a big demand (in other words is considered important by the majority of OASIS members) OASIS (the supply side) will produce a quality spec covering it and the app server vendors will implement this spec. If the demand for such an issue is low, then it will not get as much attention from OASIS and it will either be put on the back-burner or a low-quality spec (reflecting the lack of resources dedicated to it and the poverty of use-cases due to little input) will be produced.
As far as the vendors are concerned they will concentrate on what is business-relevant and drop the rest of the protocols, simply because they will not have the resources to implement every spec that comes out of OASIS. It doesn’t make sense to implement things your customers don’t need only because they happen to be on a piece of paper that some committe wrote (it would make a lot more sense to have third-parties implement the most obscure parts of the WS spec and have the application server vendors plug these implementations into their app servers, but this is a side thought). I think that the vendors will focus on what is mostly needed (WS-Transaction being a good example) and then delegate the rest of the spec either to a third party, which could be open source projects under the OASIS umbrella, or the recycle bin ;-). I hope that the vendor community will take this market-based approach to the WS specs comig out of OASIS, it is a very flexible and efficient approach, and not get moored in a sea of meaningless and purposeless specs.

P.S. Well, you probably got used to this by now, but this post was also written in a hurry. I’m sorry, can’t do much about it.

No Comments | Tags: Development, Favorites

12 January 2007 - 21:02YouTube used for storage and distribution of videos

I was reading this article on the Presentation Zen blog and I started thinking about a site for video presentations. I cam to the conclusion that you could piggy-back on the current video infrastructure for storing and distributing your videos. YouTube and, even more, Google Video, exhibit very basic functionality (video storage and distribution) that can be refined into a higher-value service. For example you could put up a catalog of movie clips of Drama and Film students in Bucharest on YouTube and create a site that manages their portofolios while piggy-backing on YouTube’s distribution network. Doing so basically delegates infrastructure concerns to a third party that is dedicated to this task while you could focus on the value-adding aspects (marketing, etc…).
When YouTube got launched some saw it as a channel to distribute and promote small producers. Well, this is pretty hard to do, mainly because YouTube’s real estate is very small, which makes it very expensive. A few small-timers will get noticed, but just a very few. Once the big channels (NBC, CBS, etc…) see YouTube as a channel of content distribution expect them to price out of this channel pretty much everybody under a certain size. It would make a lot more sense to create niche sites that use YouTube’s infrastructure for targetting small audiences, I think that this would be a far better channel for exposing content. While the niche sites would delegate infrastructure concerns to YouTube YouTube could delegate content management to the niche sites, they would be far better suited for this.
YouTube’s functionality is mostly skewed to Web2.0/social networking concerns. I think that this incredible infrastructure put together by the engineering team at YouTube gets put to such a pointed (and possibly to a short-lived) use. It is like using blueberries only for making blueberry pancakes, and forgetting about the rest. YouTube could turn into the future repository for video content, but for this they should change the way they do business, starting with their terms of service. Indeed, it is possible that what we understand today by YouTube, namely its infrastructure + its social networking functionality will be a small division within a greater YouTube whose primary business is hosting video content. We will see into what YouTube will evolve, once again I think that they seriously minimize their potential by exploiting only one type of functionality related to video content.
P.S. This post didn’t cover the - some say - troublesome issues with YouTube’s terms of service.
P.P.S. This post also falls in the category of posts written on the run, sorry if I didn’t go deeper into some issues. I was pretty serious about the idea of hosting videos for Drama students in Romania on Youtube and marketing them on a different site which uses YouTube for storage, I didn’t have time to explore it.
Later edit: It would be possible for YouTube to include some sponsored links in search results ( similar to AdSense) in order to advertise small video producers similar to the way AdSense is advertising small businesses. In this way YouTube’s real estate (space on its web-pages) would grow to the point where the price for getting on this real estate would drop, therefore lowering the barrier of entry for small producers.
Later edit 2: By piggy-backing over YouTube’s infrastructure I meant embedding their movies in web-pages/IFrames/DIVs/etc… by copy-and-pasting the “Embed” textbox. The embedded YouTube component is not really meant to be used widely, primarily because it cannot be customized easily, which limits its use on outside sites.
Later edit 3: According to this article YouTube started making its content available thru third-parties, Verizon and Vodafone. It is a good start for diversifying its functionality, YouTube will basically handle the infrastructure concerns while its partners will focus on managing the content. I think that they could establish a lot more partnerships like this.
Later edit 4: Any interaction with outside systems should be hidden behind an abstraction layer (this is so obvious that I didn`t include it here). One side effect of this would be the fact that you could deploy your videos on various video hosting platforms (youtube, google video, vimeo, trilulilu.ro) and then use the appropriate platform suited to your video. One example that I thought about is hosting videos on trilulilu.ro for Romanian users (which do no want to pay higher fees for intensive network traffic with the Western world) and the same videos on youtube for Western users.

No Comments | Tags: IT in S-E Europe, Miscellaneous

8 January 2007 - 23:37New category

I created a new category “Econo-computing” which addresses issues in the computing field seen from an economics point of view. I am not sure what will go in this category, but I find this field interesting and I will continue to explore it.

No Comments | Tags: Econo-computing

8 January 2007 - 23:36Supply and demand in a computing environment

I was talking in a previous post about how the demand for interceptions in an application was not met properly by the supply until AOP came about and created a scalable process that could handle interceptions efficiently. I am thinking that you could generalize this case and state that this mis-match between the demand for a behavior or feature and the supply for that behavior or feature betrays an ineffiency in the computing environment (language + IDEs + frameworks + containers + etc…) that tried to address the issue. In the example above implementing interceptions following strict OOP concepts was certainly possible, but it was unfeasible.
In a market environment high demand that cannot be met by supply usually translates into a high price. In the above example the high price would have been the cost of developing and, even more, maintaining, the system in which interceptions were implemented in pure OOP fashion. In the example of OOP done in C the cost would have been the cost of coordinating a team of programmers and the cost of turning a programmer into a human compiler.

Mismatches between demand and supply in a computing environment sometimes appear as the inability to scale. If in the interceptions example the inability to scale resulted in mushrooming of sub-classes which would basically re-implement the original methods with some interception logic around them, in the example of OOP done in C the inability to scale was the inability to have a large team of developers follow some coding rules that would have resulted an OOP-style coding. These 2 examples could not scale, or in other words as the demand (for interceptions) was increasing, the supply (the OOP environment in which these interceptions were coded) could not keep up. Inability to scale a behavior is basically a facet of a mis-match between demand and supply for a particular feature.
It would be interesting to see how you could address these mismatches. Looking at how the interceptions and C++ problems were addressed it would appear that it requires some large investment of some kind. This investment, which usually takes the form of a framework which addresses the problem, is strategic to a certain extent, since it will basically keep your costs down for a certain period of time.

P.S. I know that I am stretching some concepts over here, but quite frankly I don’t care. I’ll be continuing to explore this field as I find it pretty interesting.
P.P.S. I wrote this post also in a hurry, I may come back to it. I gotta go right now.

No Comments | Tags: Econo-computing, Favorites, Management

8 January 2007 - 16:20Interceptors and scalability

I was thinking about the roots of AOP, about what makes it different from others programming paradigms, about what defines it and it came down to interceptions. AOP is pretty much about intercepting method calls and doing something before or after. This interception mechanism grew into a full-fledged language in the case of AspectJ or into a full-fledged binding mechanism in the case of Spring AOP.
Intercepting method calls was doable in plain OOP but it was pretty hard to do. You could, for example, extend a class and override a method with method that would intercept the original call, do something around it and then call the original method. You could do this, but this could not scale. You could not do this for dozens of methods and you could not turn an interceptor on or off as your application would need. In comes AOP which takes this interception mechanism and builds a whole environment around it so that you can apply interceptions as you need. Both AOP environments I mentioned (AspectJ and Spring AOP) scale very well so that it can match the demand of interceptions with the supply, either thru a programming language, as in the case of AspectJ, or declaratively, as in the case of Spring AOP.
So I would say that AOP is the main way to implement interception-based programming in an OOP environment.

P.S. I wrote this post in a hurry, and unfortunately I could not expand on some aspects ;-) of this (the supply and demand of interceptions was something I wanted to explore more in detail). I would probably re-visit this post later.

1 Comment | Tags: Development, Econo-computing

2 January 2007 - 2:22Watch out, private pension funds are coming

One of the side-effects of the outsourcing industry in Romania will be the emergence of private pension funds. The main argument for this is the fact that in Romania a sizable group of professionals had their salaries risen towards their Western counterparts’ salaries, while their Western counterparts saw their salaries go down a bit (this is still fiercely debated, as far as I see the salaries didn’t go down, but rather some professions disappeared). While this group of people saw their salaries rise the rest of the country saw their salaries plummet. The rest of the country was active mainly in manufacturing and, thanks to globalisation, were put in competition with the ultra-low cost manufacturing hubs in China and as a result their salaries were driven down ferociously. This group of people (let’s call them manuacturers) is for now the largest group in Romania (which is very unfortunate) and it skews most of the statistics due to its size, one important statistics being the median standard of living. So right now the population of Romania is pretty much split in 2 categories: the few highly-skilled professionals that benefited from globalisation and the large mass of manufacturers which were hit pretty hard by it. There is a gray band between these 2 categories, but we will not concern ourselves with it for now.
Well, the highly skilled group has a pretty bad problem. When a highly skilled worker (HSW) retires it will fall first on the Romanian pension provided by the government. As this pension is correlated to the median standard of living the HSW will see its standard of living drop enormously (it will mean replacing your moisturizing body foam with homemade soap made out of fat bought in bulk, replacing your 4 rooms apartment with a one room apartment because you cannot pay for the utilities and, possibly, giving up on hot water. Yes, something like this). Well, they wouldn’t like this so they will provision for this with a private pension fund. It makes sense to save and invest for your retirement while you work and a private pension fund would do this vrey well in a country with a very corrupt government. The less you rely on this government, the better off you are.
So, it looks like private pension funds will be coming to Romania in order to help Romania’s HSWs provision for their golden days and quite frankly, I think they will provide a service that is very much needed by the society.
But, this could very easily turn into one of the largest fleecings that the Romanian society has yet to go thru (as if it has not seen enough pyramidal schemes already). Currently the money resides with the HSWs and, since the scam artists go where the money is, it would follow that they will be targeted, I, for one, am convinced of this. It is very hard to be a HSW in Romania: you get to work crazy hours, face impossible demands from your bosses and basically give up on living a normal life. I can only hope that they will not see all this pain go to waste in one of the worst possible ways…
The businessman in this article is said to be eyeing the private pension funds industry with great interest (as in this article from Cotidianul, 5-th paragraph). Signing up for a private pension fund is basically trusting someone to look after your future. Would you trust someone who is accused of masterminding the ruin of a few hundred of thousands of people with your future? I wouldn’t.

Happy New Year!!!

No Comments | Tags: IT in S-E Europe