Friday, January 18, 2013

Why yet another blog about conputing and after so many years?

It was April 2005 when I started this blog. I was a Java-Oracle developer and I was at the begin of my career as team leader at virgilio.it, at that time # 1 Italian web portal. I was amazed by what at the time was an incoming revolution,  the Web 2.0. I read and read again the article by Tim O'Really about Web 2.0. Starting a blog or just trying to start it seemed a mandatory step. The following mandatory step was becoming the fonder of an open source project. So, Pippoproxy was born, a 100 percent pure Java HTTP proxy designed/implemented for Tomcat that can be used instead of standard Apache-Tomcat solutions.

It was before my MBA and my incursion in the private equity arena where I must confess I lost a bit the touch for technology and the attraction for SEXY TECHNOLOGY. I started to find sexy discounted cash flows Excel models or amazing PowerPoint presentations aimed to convince investors to put money on some fund or listed company. Again, the more the time passed the more I was convinced that nothing new was under the sun. Java, PHP, Apache projects ... the same stuff again and again... 

Now I know I was wrong. Exactly at that time Hadoop was born as well as other other innovative open source projects. A new revolution, nowadays known with the buzzword Big Data, was born. Now I feel as excited as at that time. The same excitement of when I discovered a hack ... the same excitement of when I was child and I realized a program to predict football matches with my mythical Commodore Vic 20.  Just for fun! 

In the next posts I'm going to analyze tools, open source projects, algorithms, statistical methods, products and I'll give them a 1-5 score. No strict methodology, no committees, just personal judgment. Just for fun!

Thursday, January 17, 2013

If Facebook new Graph Search is your Personal "Big Data" why Facebook's shares were flat at $30.10 in early trading on Wednesday?


Last Tuesday Facebook announced a new way to "navigate connections and make them more useful": Graph Search (beta version).

Graph Search will allow users to ask real time questions to find friends and information within the Facebook universe. Searches like “find friends of friends who live in New York and went to Stanford” would come back with anyone who fit the bill, provided that information had been cleared to share by the users.

Graph Search will appear as a bigger search bar at the top of each page. When you search for something, that search not only determines the set of results you get, but also serves as a title for the page. You can edit the title - and in doing so create your own custom view of the content you and your friends have shared on Facebook.

The first version of Graph Search focuses on four main areas -- people, photos, places, and interests.
  • People: "friends who live in my city," "people from my hometown who like hiking," "friends of friends who have been to Yosemite National Park," "software engineers who live in San Francisco and like skiing," "people who like things I like," "people who like tennis and live nearby"
  • Photos: "photos I like," "photos of my family," "photos of my friends before 1999," "photos of my friends taken in New York," "photos of the Eiffel Tower"
  • Places: "restaurants in San Francisco," "cities visited by my family," "Indian restaurants liked by my friends from India," "tourist attractions in Italy visited by my friends," "restaurants in New York liked by chefs," "countries my friends have visited"
  • Interests: "music my friends like," "movies liked by people who like movies I like," "languages my friends speak," "strategy games played by friends of my friends," "movies liked by people who are film directors," "books read by CEOs"
Forbes talks about your Personal "Big Data".

Differences with web search

Graph Search and web search are very different. Web search is designed to take a set of keywords (for example: "hip hop") and provide the best possible results that match those keywords. With Graph Search you combine phrases (for example: "my friends in New York who like Jay-Z") to get that set of people, places, photos or other content that's been shared on Facebook. We believe they have very different uses.

Another big difference from web search is that every piece of content on Facebook has its own audience, and most content isn't public. We've built Graph Search from the start with privacy in mind, and it respects the privacy and audience of each piece of content on Facebook. It makes finding new things much easier, but you can only see what you could already view elsewhere on Facebook.

Lack of a timeline for the possible launch of graph search on mobile devices + lacks the depth of review content = NO GOOGLE KILLER?


BofA Merrill Lynch analysts estimated Facebook could add $500 million in annual revenue if it can generate just one paid click per user per year, and raised its price target on the stock by $4 to $35.

Facebook's shares were flat at $30.10 in early trading on Wednesday. They have jumped about 50 percent since November to Tuesday's close after months of weakness following its bungled Nasdaq listing in May.

However, analysts at J.P. Morgan Securities said the lack of a timeline for the possible launch of graph search on mobile devices may weigh on the tool's prospects.

The success of the graph search, which will rely heavily on local information, depends on Facebook launching a mobile product, the analysts said. Half of all searches on mobile devices seek local information, according to Google.

Graph search also lacks the depth of review content of Yelp Inc, the analysts added.

Pivotal Research Group analyst Brian Wieser said monetization potential would be largely determined by Facebook's ability to generate a significant portion of search query share volumes and he expects that quantity to be relatively low.

"Consumers are likely to continue prioritizing other sources, i.e. Google. Advertisers would consequently only use search if they can, or are perceived to, satisfy their goals efficiently with Facebook," Wieser said.

NO GOOGLE KILLER

Analysts mostly agreed that Facebook's search tool was unlikely to challenge Google's dominance in web search at least in the near term.

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 :).