Wednesday, October 19, 2005

Welcome to Web 2.0

In What Is Web 2.0 O’Reilly Media President and CEO Tim O'Reilly explains what it means Web 2.0. Basically, it's based on a set of core principles:
  1. The web as platform
  2. Harnessing Collective Intelligence
  3. Data is the Next Intel Inside
  4. End of the Software Release Cycle
  5. Lightweight Programming Models
  6. Software Above the Level of a Single Device
  7. Rich User Experiences
P1. The web as platform. Explained by example:
  • Netscape vs. Google. Netscape framed the web as platform in terms of the old software paradigm: their flagship product was the web browser, a desktop application, and their strategy was to use their dominance in the browser market to establish a market for high-priced server products. Google, by contrast, began its life as a native web application, never sold or packaged, but delivered as a service, with customers paying, directly or indirectly, for the use of that service. None of the trappings of the old software industry are present. No scheduled software releases, just continuous improvement. At bottom, Google requires a competency that Netscape never needed: database management. In fact, to Tim, the value of the software is proportional to the scale and dynamism of the data it helps to manage. While both Netscape and Google could be described as software companies, it's clear that Netscape belonged to the same software world as Lotus, Microsoft, Oracle, SAP, and other companies that got their start in the 1980's software revolution, while Google's fellows are other internet applications like eBay, Amazon, Napster, and yes, DoubleClick and Akamai.
  • DoubleClick vs. Overture and AdSense. DoubleClick was ultimately limited by its business model. It bought into the '90s notion that the web was about publishing, not participation; Overture and Google's success came from an understanding of what Chris Anderson refers to as the long tail, the collective power of the small sites that make up the bulk of the web's content. DoubleClick's offerings require a formal sales contract, limiting their market to the few thousand largest websites. The Web 2.0 lesson: leverage customer-self service and algorithmic data management to reach out to the entire web, to the edges and not just the center, to the long tail and not just the head.
  • Akamai vs. BitTorrent. BitTorrent, like other pioneers in the P2P movement, takes a radical approach to internet decentralization. Every client is also a server; BitTorrent thus demonstrates a key Web 2.0 principle: the service automatically gets better the more people use it.
P2. Harnessing Collective Intelligence.
Explained by success story.
  • eBay's product is the collective activity of all its users; like the web itself, eBay grows organically in response to user activity, and the company's role is as an enabler of a context in which that user activity can happen.
  • Amazon sells the same products as competitors such as Barnesandnoble.com, and they receive the same product descriptions, cover images, and editorial content from their vendors. But Amazon has made a science of user engagement.
  • Wikipedia, an online encyclopedia based on the unlikely notion that an entry can be added by any web user, and edited by any other, is a radical experiment in trust, applying Eric Raymond's dictum (originally coined in the context of open source software) that with enough eyeballs, all bugs are shallow, to content creation.
  • Sites like del.icio.us and Flickr, two companies that have received a great deal of attention of late, have pioneered a concept that some people call folksonomy (in contrast to taxonomy), a style of collaborative categorization of sites using freely chosen keywords, often referred to as tags. Tagging allows for the kind of multiple, overlapping associations that the brain itself uses, rather than rigid categories.
  • Even much of the infrastructure of the web--including the Linux, Apache, MySQL, and Perl, PHP, or Python code involved in most web servers--relies on the peer-production methods of open source, in themselves an instance of collective, net-enabled intelligence. There are more than 100,000 open source software projects listed on SourceForge.net.
  • Blogging and the Wisdom of Crowds. At this regard, tom remembers that RSS allows someone to link not just to a page, but to subscribe to it, with notification every time that page changes. Skrenta calls this the incremental web. Others call it the live web.
P3. Data is the Next Intel Inside. The race is on to own certain classes of core data: location, identity, calendaring of public events, product identifiers and namespaces. In many cases, where there is significant cost to create the data, there may be an opportunity for an Intel Inside style play, with a single source for the data. In others, the winner will be the company that first reaches critical mass via user aggregation, and turns that aggregated data into a system service.

P4. End of the Software Release Cycle. Operations must become a core competency. Google's or Yahoo!'s expertise in product development must be matched by an expertise in daily operations. So fundamental is the shift from software as artifact to software as service that the software will cease to perform unless it is maintained on a daily basis.

It's also no accident that scripting languages such as Perl, Python, PHP, and now Ruby, play such a large role at web 2.0 companies. Perl was famously described by Hassan Schroeder, Sun's first webmaster, as "the duct tape of the internet."

Users must be treated as co-developers, in a reflection of open source development practices (even if the software in question is unlikely to be released under an open source license).

P5. Lightweight Programming Models. RSS, SOAP, XML data over HTTP, REST, AJAX support lightweight programming models that allow for loosely coupled systems. Think syndication, not coordination. Design for hackability and remixability.
Moreover, when commodity components are abundant, you can create value simply by assembling them in novel or effective ways (Innovation in Assembly:).

P6. Software Above the Level of a Single Device. To date, iTunes is the best exemplar of this principle. This application seamlessly reaches from the handheld device to a massive web back-end, with the PC acting as a local cache and control station. There have been many previous attempts to bring web content to portable devices, but the iPod/iTunes combination is one of the first such applications designed from the ground up to span multiple devices. TiVo is another good example.

P7. Rich User Experiences. Ajax isn't a technology. It's really several technologies, each flourishing in its own right, coming together in powerful new ways. Ajax incorporates:
  • standards-based presentation using XHTML and CSS;
  • dynamic display and interaction using the Document Object Model;
  • data interchange and manipulation using XML and XSLT;
  • asynchronous data retrieval using XMLHttpRequest;
  • and JavaScript binding everything together.
A Web 2.0 word processor would support wiki-style collaborative editing, not just standalone documents. But it would also support the rich formatting we've come to expect in PC-based word processors. Writely is a good example of such an application, although it hasn't yet gained wide traction. Writely is a good example of such an application, although it hasn't yet gained wide traction.

Thursday, September 08, 2005

How many kinds of IT Consulting are there?

Some weeks ago, I was amazed reading from a post on Artima by Bruce Eckel titled "What is Consulting?" that original Rational Rose has been developed by Jon Hopkins and only later purchased by Rational.

Bruce's point was about the phenomenon, likely to happen over and over in the IT industry, that Rational Unified Process focus only on one aspect that seems to be "the solution" and miss the big picture, producing unintended consequences that eliminate the benefit of what may seem so clear in isolation.

More generally, the question whether is possible to scale a consulting operation without turning it into a body shop such as Andersen Consulting is affronted.

“ It's tempting to make the analogy to a ponzi scheme, but it's not that bad. Both forms of a consulting firm (first-class consultants only vs. high-tech body shop) have value. The problem is the temptation to present the second form as the first, in order to apply the same high fees of the first-class consultant to each additional body added to the shop. The goal of the company becomes "how do we transfer the aura of authority from the high-image consultant(s) to anyone who works for us, so that we can charge the highest fees possible?" Or to simplify, at some point the bean-counter mentality takes over and the mission statement of the company goes from "how do we provide the greatest value to the customer?" to "how do we charge the highest fees possible?" (You can argue that this is the fundamental shift that any publicly-held company goes through. After all, a public company is legally beholden to maximize shareholder value, so how could it be otherwise?)”

Still, according to Bruce, consulting is "when you have some kind of special expertise -- come by through hard struggle and learning -- that you transfer to a group of people, in a relatively short period of time, and in a way that is unique for that group".

I think this is not the case for 99,999999999 % of IT consultants ... or something more. So, let's assume Bruce's statement, how is it possible that IT consulting doesn't scale when first-class consulting do? We ougth to admint this looks at least a bit strange. Perhaps, the term consulting is misused for the IT case...


Monday, August 08, 2005

The mythical "software architect"

After so many years spent in ICT projects, many times I heard the term "archietct" (re: "*architect*") within many different contexts and maining many different things. But that isn't enough, also for the same role I knew really different cases. I knew architects very skilled in five or six programming languages and yet another three or four sripting languages, two or three DBMSs, discrete mathemathics, algorithms, data structures, design at large ... and other ones wondering if Java had the required support for TCP. Is it the same job or not? How many other industries are there having these anomalies? If you are looking for a carpenter you probably will trust him/her in action with tools such as hammers; if you are looking for a mechanical engineer, you probably will trust his/her technical backgroung from college on ... but, if you are looking for a "[sofware]*[solution]*[tecnical]*architect*" what should you trust?


-- Rational Unified Process
“Software architecture encompasses the significant decisions about the organization of a
software system. The selection of the structural elements and their interfaces by which
the system is composed together with their behavior as specified in the collaboration
among those elements. The composition of the structural and behavioral elements into
progressively larger subsystems, the architectural style that guides this organization, these
elements, and their interfaces, their collaborations, and their composition. Software
architecture is concerned not only with structure and behavior but also with usage,
functionality, performance, resilience, reuse, comprehensibility, economic and
technology constraints and trade-offs, and aesthetic issues.”


-- SunTone Architecture Methodology:
Architecture is a set of structuring principles that enables a system to be comprised of a
set of simpler systems each with its own local context that is independent of but not
inconsistent with the context of the larger system as a whole.


--Vitruvius, circa 25 BC:
“The ideal architect should be a person of letters, a mathematician, familiar with
historical studies, a diligent student of philosophy, acquainted with music, not ignorant of
medicine, learned in the responses of jurisconsults, familiar with astronomy and
astronomical calculations.”


-- Mark Cade, Simon Roberts, Sun Certified Enterprise Architect for J2EE™
"[..] What does the architect do? What is the difference between an architect compared with a

senior developer? These are some of the common questions asked. The designer is
concerned with what happens when a user presses a button and the architect is concerned
with what happens when ten thousand users press a button. An architect mitigates the
technical risks associated with a system. A technical risk is something that is unknown,
unproven, or untested. Risks are usually associated with the service-level requirements
and can occasionally be associated with a business requirement. Regardless of the type of
risk, it is easier to address the risks early in the project while creating an architecture,
then to wait until construction when you have a large developer base that could
potentially be waiting while risks are solved[..]"


-- Becoming an Architect, A Conversation with Luke Hohmann, Part IV
[..] Most people think of architecture as technical, and the architect as a technical person. And absolutely, the architect must be technical. But there's also a social aspect of the architect role that I think is not well communicated or understood. The architect is the person who will say, "This is the way we do things."

An architecture is like a dirt road. The first time a car drives over it, the road looks about the same. By the time the 10,000th car drives over it, though, there will be grooves in the road. As an architecture mature, it gets grooves.

For example, one kind of groove that is common in architecture is error handling strategy. Whether you handle errors by returning error codes or throwing exceptions is part of your architecture. In practice, most teams will choose one error handling mechanism as the dominant approach, the other as the subordinate approach, because you often need to use both. Among the roles of the architect is choosing the dominant approach to error handling, keeping the flame of the dominant approach, and educating the team on when the subordinate approach is an acceptable alternative. That's one aspect of the architect's job, and that's a social role.

Conversely, you can tell when a system hasn't had an architect, because it lacks consistency in things like error handling, naming, and so on. In a system I'm working on right now, for example, I noticed that some of the database tables have a unique identifier column named id, other tables have a unique identifier column named table id, and other tables do something completely different. So table foo would have a fooid column, and table bar would have an id column. I finally went to the development team and said, "Let me guess. You've had more than one DBA [Database Administrator] in your time here." And they said, "Oh yeah, we've had five of them." Every DBA had their own way of naming columns. They didn't have an architect to ensure a technical consistency in column naming. There wasn't a notion of conceptual integrity from a technical perspective[..]


-- Tarchitects and Marketects, A Conversation with Luke Hohmann, Part V
Envisioning the future on behalf of customers, even when they can't articulate what they want, is the world-class marketect's key distinguishing feature


--Martin Fowler, Patterns of Enterprise Application Architectues
[..] Architecture is a terms that a lots of people try to define, with little agreement. There are two common elements: One is the highest-level breakdowm of a system into its parts; the other, decisions that are hard to change. It's also increasingly realized that there isn't just one way to state a system architecture; rather, there are multiple architectures in a system, and the view of what is architecturally significant is one that can change over a system's lifetime [...] architecture is a subjective thing, a shared understanding of a system's design by the experts developers on a project. Commonly this shared understanding is in the form of major components of the system and they interact. It's also about decisions that developers wish they could get rigth early on because there're perceived as hard to change. The subjectivity comes in here as well because, if you find that something is easier to change than once thought, then it's no longer architectural. In the end architecture boils down to the important stuff -- whatever that is.



Tuesday, May 03, 2005

Brazilian Java Technology Users Join Java Community Process (JCP)

SouJava is Brazil's largest Java user group, with more than 12,000 members, has become a member of the JCP. The group has been involved in the Javali Project, an effort sponsored by the Brazilian government to produce open-source technology, including an open-source Java Virtual Machine [See Bruno Souza's explanation for why].

Friday, April 29, 2005

Aspect-Oriented Programming Considered as Harmful as GOTO

Reading yesterday news I remained rather shocked to find this link to a Forrester research

From the article: Aspect-oriented programming (AOP) is intended to address common problems that object-oriented programming (OOP) doesn't address well, plus some problems that OOP itself created. However, AOP is a risky solution: It is a very generic mechanism for solving some very specific concerns and has been likened to a kind of "GOTO" statement for OOP. Like GOTO, it can cause more harm than good.

The research seems based on two papers from the University of Passau:

Dijkstra in his letter observed: " ... that the quality of programers is indirectly proportional to the amount of Go To statemets they use in their programs.". As currently most AOP research is not about methodolgy but about more dynamicity in the future this might be rephrased to " ... indirectly proportional to the amount of advice they use in their programs.

Aspect oriented programming has been proposed as a way to improve modularity of software systems by allowing encapsulation of cross-cutting concerns. To do so, aspects specify where new functionality should apply using pointcuts. Unfortunately todays mainstream aspect oriented languages suffer from pointcut languages where pointcut declarations result in a high coupling between aspect and base system. Additionally, these pointcuts are fragile, as non-local changes easily may break pointcut semantics. These properties are a major obstacle for program evolution of aspect oriented software. This paper introduces a pointcut delta analysis to deal with this problem.

This research has been widley commented on aosd-discuss.

Friday, April 22, 2005

The first 40 years of Moore's Law



His famous dictum turned 40 by April 19.

Intel last week offered $10,000 for a mint-condition copy of the April 19, 1965, issue of Electronics magazine. In that issue, Gordon Moore declared the integrated circuit was the future of electronics and predicted the rate of improvement for the semiconductor industry.

At least one copy is already missing from the University of Illinois.

He spoke to reporters recently about the electronics industry's progress, artificial intelligence, the emergence of China and the early days of the industry.

Is there anything coming down the pike that could replace silicon?
Moore: Some of these other things, quantum dots and nanotechnology and that kind of thing--I will admit to being a skeptic around those things replacing mainstream digital silicon. You can clearly make a tiny little transistor by these techniques with potentially great high frequency, but can you connect a billion of them together? That's really the problem; it's not making a small transistor. I view the technology that has developed around integrated circuits to be a fundamental way of building complex microstructures. Rather than being replaced, it's actually infiltrating a lot of other fields. You have MEMS and gene chips. Some of these microfluidic

How many times did people predict the end of Moore's Law, and how many times were you actually concerned it was going to happen?
Moore: It seems to me in the last 10 years I read a lot of articles that did. There was a time when I believed one micron was probably going to be the limit. We went through that so fast it wasn't a barrier at all. Then I thought a quarter of a micron might be, but it didn't stop it. Now we're below a tenth of a micron. Heck, we're doing one-sixty-fifth of a micron, and I don't see it stopping, short term anyhow.

His presentation for IEEE International Solid-State Circuits Conference : No Exponential is Forever … but We Can Delay "Forever" (Acrobat PDF file, 2005 KB)



Monday, April 18, 2005

AJAX, Part 1: resources

AJAX: short for "Advanced Javascripting and XML" or "Asynchronous JavaScripting and XML"
XMLHTTPRequest Libraries and Code Samples:
  • JSON-RPC-Java: JSON-RPC-Java is a key piece of Java web application middleware that allows JavaScript DHTML web applications to call remote methods in a Java Application Server (remote scripting) without the need for page reloading (as is the case with the vast majority of current web applications). It enables a new breed of fast and highly dynamic enterprise Java web applications (using similar techniques to Gmail and Google Suggests).
  • XMLHttpRequest Demo: 3 demos in one using Borges for the back end.

Monday, April 11, 2005

Tagging vs Searching

Looking up the word "tiger" on Virgilio (or other search engines :) you get a list of results throws together sites about the professional golfer Tiger Woods, the Mac OS X operating system, or the last Java 2 Platform Standard Edition (J2SE) 1.5 —code named "Tiger". In order to force a context , you can refine the search appending a further word, e.g. "tiger golf", "tiger apple" or "tiger java". Anyway, you probably have to sift through pages of irrilevant results to find what you want.

A different approach to avoid such a confusion is let users categorize their Web resources (link, photos, ...) by category, title, interest ... using a tag.

This is the approach of
del.icio.us, the Web site opened at the end of 2003 by the 30-years-old New Yorker software programmer Joshua Schachter. With del.icio.us people are able to tag any link they choose for easy retrival later and to share easily with other people. Today more than 85,000 people are using the free service. I tried the service finding Web resources about Ajax, a new rising Web Technology and I have been very impressed. Comparison with traditional search engines is even not practicable for this topic.

Other interesting examples are Technorati.com and Flickr.com. The latter, a year-old photo-sharing service, has been
bought by the giant Yahoo! Inc for an undisclosed sum in March with its 420,000 subscribers, while the former, a blog index, offers a set of interesting services such as a pluggable searchlet for searching information inside blogs (as this :).