Feb 4, 2012

Node.js

Happy New Year - 2012!

There are lots of optimism and hope for 2012 in the tech world compared to last few years. This optimism brings new energy and new energy brings new innovations. One of the new innovation that may become mainstream in 2012 is Node.js!

What is Node.js?
A new server-side web framework using JavaScript. It's a wrapper on top of v8.

What is Node.js? (engineering definition from the web site)
Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.

What is the website for Node.js?
http://www.nodejs.org/

What is v8?
It's a JavaScript Engine from Google.

Where is v8 used?
Google Chrome browser.

Who is the lead engineer for v8?
Lars Bak

Who is Lars Bak?
He was a former Sun engineer and was the lead for Hotspot JVM. If you have to count the top 10 VM engineers in the world, it's safe to say that Lars will be one of them. His engineering track record speaks for it.

Why do I think Node.js will succeed?
1) Google's V8 JavaScript engine (Lars Bak + other engineers)
2) Strong community
3) JavaScript


What is the use-case of Node.js?
Real-time communications in the web properties.


How strong is the Node.js community?
Very strong and is growing.


Is Node.js is just a framework or an ecosystem?
Node.js is a framework and it has got a strong ecosystem around it. I mean the libraries.


How big is the ecosystem?
http://search.npmjs.org/#/_browse/all
is the answer. You can see how many libraries are already available for Node.js.

How to install programs in Node.js?
NPM (Node Package Manager)
http://www.npmjs.org/


Finally, Is Node.js competes or compliments Java?
Currently, its a complimentary framework. If this momentum continues (JavaScript for both front end and back end), Node.js may become the Tier-1 in the server-side web computing. I don't think it will replace Java but clearly lot of other frameworks like PHP, Ruby, Python, etc will take a hit with the growth of Node.


Summary
There are 2 factors that are highly influencing and favoring Node.js now.


a) Server-side JavaScript framework
The importance of JavaScript in the web computing is increasing on a daily basis and server-side JavaScript was discussed/debated for many years. Lack of good server framework made it challenge for JavaScript to succeed in the server side for long time and Node.js is the answer for it.

b) Real-time communications
In both side (consumer web & SaaS), there is a high demand for real time use cases and Node.js is becoming answer for it.

Do Yourself A Favor in 2012: Learn JavaScript!




Nov 25, 2011

Adobe Flash vs Apple Talk

Greetings. I hope my readers in USA had a great Thanksgiving and enjoyed the break.

2011 is coming to an end. This is yet another interesting year for the computer industry. Industry will remember Dennis Ritchie and Steve Jobs for ever. 2011 will also be remembered for Flash vs HTML 5, thanks to mostly for Mr.Jobs.

IMO, proprietary technologies can't win against open standards. I was with Sun for a decade and we often was told about TCP/IP vs other proprietary network stacks. I see that history is repeating itself this time for Adobe- Flash vs HTML 5.

I read the famous blog by Steve Jobs- "Thoughts on Flash" several times. He is right. In fact when I was reading his blog, it reminded me of AppleTalk rather than Adobe Flash! It was Apple on the receiving end during the network stack evolution and AppleTalk is the proprietary network stack from Apple. AppleTalk & other proprietary network stack failed. TCP/IP won the battle, otherwise there is no Internet today.

Basically Steve Jobs was telling the "inconvenient truth" of proprietary technologies can't win against open standards to Adobe and the world. He is absolutely right. He is just telling his own experience with AppleTalk :-)

The websites like Occupy Flash (http://www.occupyflash.org/) is the just the beginning. Next few years we will see more & more HTML 5 applications across the devices. It's funny that HTML 5 is not just bad for Adobe and even for Apple itself. Click here to see how Financial Times bypassed Apple Store with a HTML 5 app.

I have got great respect for both Adobe and Apple. They have got some great engineers and consistently delivered some innovative products for the last 2 decades. We all remember Apple for the best computing experience. But please don't forget that it was the Flash which gave the best web experience. (Do you use YouTube?)

The end of Flash doesn't mean end of Adobe. If Adobe embraces HTML 5 and Adobe can become the Apple of "Front-end Web". Adobe knows what it means to deliver high performance RIA over the web. It's just the game got changed- instead of Flash it should be HTML 5.

AppleTalk
For reference: Apple Talk is the TCP/IP equivalent of Apple's proprietary network stack. Mac OS X v10.5 was the last Apple OS to support AppleTalk and is now history. I don't have any experience with Apple Talk and can't talk about the technology. The following is the table from Wikipedia describing the implementation of Apple Talk. I am sure Apple might have leveraged some of the investments here to their TCP/IP stack for MacOS but still it's waste of resource & time on a proprietary network stack that failed against TCP/IP.

OSI ModelCorresponding AppleTalk layers
ApplicationApple Filing Protocol (AFP)
PresentationApple Filing Protocol (AFP)
SessionZone Information Protocol (ZIP)
AppleTalk Session Protocol (ASP)
AppleTalk Data Stream Protocol (ADSP)
TransportAppleTalk Transaction Protocol (ATP)
AppleTalk Echo Protocol (AEP)
Name Binding Protocol (NBP)
Routing Table Maintenance Protocol (RTMP)
NetworkDatagram Delivery Protocol (DDP)
Data linkEtherTalk Link Access Protocol (ELAP)
LocalTalk Link Access Protocol (LLAP)
TokenTalk Link Access Protocol (TLAP)
Fiber Distributed Data Interface (FDDI)
PhysicalLocalTalk driver
Ethernet driver
Token Ring driver
FDDI driver

Summary
Adobe Flash is the new Apple Talk. HTML 5 is the new TCP/IP. If Adobe wants to be the leader in the front-end web, it should fully embrace HTML 5 and should build a open standards based web browser with full duplex asynchronous communication for Rich Internet Applications!

Happy Holidays. Stay Safe. Stay Warm.

Oct 30, 2011

Senior Software Engineer - Web GUI Framework

Greetings.

We are a stealth mode Silicon Valley cloud startup in the engineering domain, doing 3D graphics over the web. We are looking for a lead Web GUI engineer and pl find the job description below.

Referral Fee: Company is offering $2K, if the candidate is hired. If interested, pl email me: uday.s@comcast.net

Responsibilities

This is a ground floor opportunity to make a great impact to the product and company to build the modern Web 2.0 style GUI framework that will be used by high profile customers worldwide on everyday basis over the cloud. This is a hands-on position to design and build the modern Web GUI using the latest Web 2.0 style technologies on top of JVM.
·        Design and build a web scale GUI framework on top of our back end platform with strong focus on ease of use for product features
·        Work closely with graphics engineers to deliver high performance 3D graphics using this web framework.
·        Work closely with our back end Java server team to use the REST API for data management.
·        Required to quickly translate product UI requirements into prototypes and followed by production quality web GUI.

Requirements

·       Strong desire to work for a dynamic silicon valley startup
·       At least one publicly demonstrable product experience in building Web GUI. (URL preferred to study the design)
·       Passionate about delivering the best possible user experience to millions of users worldwide over the cloud
·       Very strong Java web software development experience on top of web containers like Apache Tomcat with deep experience in REST API, HTTP internals and web scale needs for the GUI.
·       Distributed session management in the cloud environment and exposure to load balancers like HA Proxy.
·       Previous experience in building web GUI using frameworks like Google Web Toolkit (GWT), Apache Wicket, Play Framework, Spring MVC, Struts, etc. is needed
·       Expert-level knowledge of HTML 5, XML, JavaScript, JSON, CSS, XSL, XSLT, JQuery, node.js and other Web 2.0 technologies.
·       Exposure to Flash (specifically Stage 3D), WebGL and other 3D graphics frameworks are strong pluses.
·       Experience with tools like Google UI Designer or Google Plugin for Eclipse and participation in usability studies are pluses.
·       Strong object oriented design, development and programing.
·       Experience in working with cross-functional teams and ability to establish strong working relationships with remote colleagues
·       Strong verbal and written communication skills
BS/MS in Computer Science or related degrees


Aug 14, 2011

Back to School : Let's Make it Important

Greetings to my readers. I hope you all are having great summer.

I generally focus on my blog about some specific technology and this time is an exception. So, I will make it very short.

It's about "shortage of engineers" in Silicon Valley.

We are living in an interesting time- so many things are going at the macro level. But an interesting fact is that one side there is a high unemployment rate in America and on the other side here in Silicon Valley, there is not enough engineers to work on the cutting edge product developments!

Why?
It's the lack of focus on education. It's the lack of focus on math & science. It's the willingness to even outsource innovation! This is not good. We need to go back to the basics and get the kids to focus on education. Yes, I mean math & science. It's hard. But the benefits are also high.

Take a look at this job opening posted yesterday by a startup in San Mateo. $150K base salary for a senior mobile engineer! Doesn't this number is attractive?
http://sfbay.craigslist.org/pen/eng/2544896729.html

You can see on everyday basis how many engineering jobs are posted here!
http://sfbay.craigslist.org/eng/

If you have an iPhone, you will see the following statement on the back side-
"Designed by Apple in California. Assembled in China".

Imagine if the current trend of lack of focus on education in US continues for a long time, what will happen to the above statement?

If you a see kid going to school next week, ask him/her:
-focus on school/education
-focus on math & science
-encourage him to work hard.

There is absolutely nothing wrong in working hard to excel in math & science. Our kids should know about it.

Have a great rest of the summer.

Feb 6, 2011

Why PHP is succeeding in web 2.0?

IMO, there are 3 key reasons:
  1. Apache web server
  2. Developer community
  3. Performance
It may be ironic to write this blog as a strong advocate of Java for more than a decade but the truth is that PHP is succeeding in the web, especially in the 2nd generation web computing. I accept it. I am coding PHP and have 2 PHP books. Do I like the language semantics? Well, it can be improved little bit more and doesn't match Java quality :-) But PHP got all the goodies to build a rich web app.

In a very broader context, we have 3 technology stacks:
  1. Java
  2. LAMP
  3. .NET
I am leaving out #3 as this is not very relevant in the modern web computing architecture. It's mostly for internal IT applications. I am seeing some traction for Scala(as it runs on JVM) and also the some flavors of Ruby & Python. But not going to discuss them as the focus here is about PHP.

Web 1.0

The birth of Java & commercial Web 1.0 was nearly happened at the same time and brilliant engineers of Sun Microsystems was able to make Java as the defacto standard for web with some key inventions like Servlets, JSP, JDBC, JMS and the container model for building & deploying apps. Also, not to forget the external contributions like struts framework, various Apache products, etc.

So, Java model was a super fit for the 3 tier web 1.0 architecture-
  1. Webserver - for static content
  2. Appserver - for business logic
  3. RDBMS - for data storage
Time moves on. Technology evolves. Architecture model changes. Business requirements changes. Scale became an important factor in the web 2.0 for obvious reasons like broadband, #of users, more devices, etc.

Java also evolves. I admit that it doesn't evolve as quickly in the front end web app domain compared to PHP. Java is heavily used in building the back end infrastructure and even data frameworks like Hadoop are written in Java. Java is still a major force in the web architecture and will continue to be...

Web 2.0
The question here is why PHP succeeding in Web 2.0?
In the web2.0 type architecture, there is no clear separation of web server & app server. The static content is mostly served by CDN. Then data is brought closer to the app tier using memcache for performance. So, the architecture is 2 tier: webserver + data storage.

So in this 2 tier architecture model, PHP makes perfect sense as it runs inside the Apache itself as a module. This completely eliminates the need to have a separate tier for business logic for the web app.
  1. Apache web server is a high performance engine. Also it's a modular architecture- we can add modules based on demand. So this is a natural choice for most.
  2. Then having PHP running inside Apache itself as a module helps to deploy the complete app inside the Apache and avoids yet another layer + network hop. This gives good performance.
  3. Like Java, PHP also has a great developer community. Once you have the mass, you will get lot's of support + rich libraries.
In a nutshell, supper rich PHP web app can be built & deployed on high performance Apache web server itself. Then for any back end processing, Java is a great match with REST API.

Summary
If you are starting to build a scalable web application, think PHP! If you have any scalable concerns, think whether your app is bigger than Facebook or Zynga! I love to hear it.

Jan 9, 2011

Impact of Mobile Computing on the Web.

The short answer is "client/server" model again.

There is no question that both smart phones & tablets will become (if not already) important devices across the age groups in both personal & business use for web computing. There was a joke last week that during CES there was more tablets than taxis in Las Vegas! The limited real estate in these devices has happily brought back the "client apps" on the web. The "app stores" are basically AOL and only difference is the input: touch computing.

Is client/server model is good?
-Probably not.

Why?
-closed model

How is client/server model is not good?
-Dependency on the OS
-Developing open/open source tools for development will be challenging
-Potential to hijack even HTTP
-Information sharing may become challenging
-Basically this mobile apps concept will eventually be pushed back to the main-computer-web(already!) to enable vendor lock-in

Remember client/server 1.0? Remember the challenges?

It may be an accident but the 2 virtual machines with a open protocol made the commercial web 1.0 possible & viable.
-Browser on the client; Make the OS irrelevant for the end users
-JVM on the server; Make the OS irrelevant for the developers
-HTTP; Open & simple protocol

I agree that it is a challenge to use web browsers on the smart phones. We need apps.

So, the question is how do we develop apps across different OS? We need a virtual layer like JVM for the client OS. One option is take the VM concept from Java and port it to browsers. So the browser becomes the platform to run apps. This model of developing apps on top of browser already exists in Firefox for developing plugins/extensions- check out XPCOM. (Cross Platform Component Object Model) XPCOM has it's own complexity problem. I am just referring it as a model. A model something like this one has to be enriched/enhanced to make it as a true platform to run cross platform mobile apps.

This type of model will allow open competition and innovation. The innovation will happen not only in the mobile apps on client devices but also in the server land for the "attach rate".

We need open mobile platform to avoid lock-ins.

Happy New Year-2011.

Sep 20, 2010

Mobile App Revolution

I recently read an article about the mobile application ecosystem revolution. I forgot the source and here is it-

  • 100 million smart phones sold last year.
  • Much more than 250 million smart phones will be sold next year.
  • More than a billion smart phones will be sold annually within ten years.
  • That’ll mean an installed customer base of two billion people using smart phones and the apps that run on them by the year 2020.
  • Those two billion customers will be using dozens if not hundreds of apps each every year.
  • That means we’re talking about several hundred billion different apps being consumed every year within a decade from now.
WOW!

There is no need to talk about the web infrastructure opportunities in the app server & database space.