Trends in Technology
Upcoming SlideShare
Loading in...5

Trends in Technology



Trends in technology. Audience was programmers / architects in a financial services domain.

Trends in technology. Audience was programmers / architects in a financial services domain.



Total Views
Views on SlideShare
Embed Views



14 Embeds 1,593 1369 167 13 11
http://localhost 6
http://blog.local 5 5 4 3 3 2 2 2 1



Upload Details

Uploaded via as OpenOffice

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

Trends in Technology Trends in Technology Presentation Transcript

  • Trends in Technology Dhananjay Nene July 13, 2010
  • Some quick caveats
  • A few, not most might be recent insights into some not so recent trends
  • Since we are dealing with the latest trends, some opinions might be forward looking
  • These opinions are my own and should not be construed to reflect anybody else's
  • Structure of Talk
    • Client
    • Programming
    • Architecture
    • Miscellaneous
  • Client Tier Trends
  • The Rich Internet Client has been coming ...
  • .. but has been stifled by tensions between specificity and genericity ..
  • .. or between user interactiveness and time / cost
  • Some of these tradeoffs are most visible in the mobile space
  • eg. Internet Apps or Client Installables
  • Leveraging the platform, or coding to the common denominator
  • What is certain is that Richness is no longer the monopoly of the client installed
  • AJAX and Javascript have demonstrated the ability to create browser based rich applications
  • And jQuery has demonstrated the path to contain quirkiness, verbosity and high development costs
  • Even as CSS has taken on most presentation tasks
  • However new challenges emerge as the older ones are contained
  • Form factors moving from discrete to a continuum
  • Even as Touch Inputs become more heavily used
  • Platform shakeouts haven't happened Symbian, iOS, Android and others
  • Specificity vs Genericity is still a big issue
  • And no consistent customer expectations
  • I believe HTML5, CSS, Javascript, AJAX will dominate in the longer term for most but the most demanding client apps .. but thats a trend in progress
  • RIP : This site best viewed in Internet Explorer.
  • Firefox, Chrome, Safari & Other webkit browser support necessary
  • As is support for multiple form factors and input mechanisms (specifically touch)
  • Touch requires lot of dumbing down of screens
  • And more error tolerances (thus wider gaps between display units)
  • I believe there is an upcoming category for integrated clients which compose data across applications
  • A good example is HootSuite, TweetDeck, Seesmic supporting multiple social networks simultaneously
  • Similarly applications will be required to render themselves into common container clients
  • But of course we heard that earlier with portal servers .. so this is still up in the air
  • In the meanwhile users don't want to press the refresh or the save button
  • Comet and eventually HTML 5 Websockets to the rescue
  • Now onto programming ..
  • The Java mindshare erosion is substantial
  • And its usage is likely to be dipping
  • Java is the new low-level / infrastructure / plumbing language
  • Even as the JVM has never been in a stronger position
  • The VM is the new OS
  • Now cross VM support is being built for many languages eg. Python, Ruby, Scala and others
  • Dynamic languages (PHP, Python, Perl, Ruby) after earlier bursts continue to hold their own
  • Some of them are getting newer runtimes or environments (eg JRuby, PyPy, Jython, IronPython)
  • But new languages such as Scala and Clojure are capturing many developer's imagination
  • And Erlang, Haskell, F# - all functional programming languages show a steady climb even though from fairly small current usage
  • What is functional programming ?
  • In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state. .. source - Wikipedia
  • One of the suggested reasons for ascendancy of functional programming is the upcoming multicore challenge.
  • It is also suggested that programs are much easier to write and maintain using functional programming techniques.
  • Should one switch to functional programming ?
  • Depends upon the specific nature of applications
  • In any case it makes sense to slowly build adequate skillsets in the same.
  • The days of the dominant language (C, C++, VB, Java) seem to be over.
  • Moreover the days of one language for an app are also history
  • We already use HTML, CSS, Javascript + 1 backend language for all web applications
  • Now increasingly it will be just as easy to use multiple languages for the back end as well.
  • Polyglot programming is certainly a much easier option now.
  • Though adoption is still a little unclear.
  • Subversion was supposed to be the new & better CVS
  • But it is increasingly getting challenged by Git and Mercurial
  • The landscape is most certainly shifting towards DVCS
  • Architecture
  • Cloud
  • Beyond the will it become popular stage
  • While I am a little uncomfortable with the term private clouds, I shall let it stick
  • Enterprise private clouds likely to mirror developments in the internet based clouds
  • The interoperable cloud allows the possibility of private clouds for normal loads and leveraging the internet clouds for peak loads
  • The major influence is usage of a large number of commodity servers instead of smaller number of large capacity servers
  • This has an important requirement of making horizontal scaling necessary at much lower thresholds
  • NoSQL
  • The relational database has completely dominated the data storage space for long.
  • Even as it seems to be starting to face a substantial threat to that absolute dominance.
  • NoSQL is different things for different people. Its a family of approaches – not one approach
  • Complex relationship maintenance is requiring graph databases
  • Some apps prefer to move intelligence (schema) away from the database and into the application. Thus some prefer NoSQL for its schemaless capabilities.
  • But much of the pressure is coming from large internet sites
  • For whom the RDBMS doesn't provide the right CAP tradeoffs
  • it is impossible for a distributed computer system to simultaneously provide all three of the following guarantees: Consistency Availability Partition Tolerance
  • The importance of C, A and P vary across different class of applications
  • Thus some particular approaches of NoSQL could be more or less applicable than others
  • Internet applications especially the really large ones, prioritize A and P in favour of C
  • However this audience focuses on financial software, and may find it more essential to prioritise C.
  • The key takeaway is to not treat C as always mandatory or required and deprioritise it where applicable – a process that requires some unlearning
  • Given a telecom analogy – the dawn of the stupid network, I find another reason why NoSQL is exciting.
  • According to that thought, internet won compared to POTS since it had a dumb network with intelligent endpoints compared to an intelligent network with dumb endpoints
  • Same for schemaless databases
  • Though I agree the thought is very hard to appreciate, when one has been exposed to SQL for long.
  • However, in relative terms this is still a nascent field. Observe carefully and leverage when and if appropriate
  • REST – Representational State Transfer
  • This is now the dominant style of architecting applications on the internet
  • REST and WS-* will compete inside the enterprise
  • While WS-* focuses on leveraging typical application design semantics including RPC, REST eschews complexity and focuses on simple document / resource access semantics
  • It is possible to talk at length on how REST leverages the very aspects that made other aspects of internet such as WWW successful.
  • But many coming from a more conventional distributed architecture background may find REST a little hard to find comfort with. Especially its lack of registries, no predefined metadata using IDL etc.
  • I find the arguments not too dissimilar from static vs. dynamically typed languages
  • REST makes it really easy for clients to leverage exposed API
  • Also Hypermedia as the engine of application state can actually help reduce many application state errors.
  • Mashups and application integration
  • Inter application collaboration for servicing a particular user request including interaction with existing SaaS applications (eg. Google Maps) going to be increasingly important
  • Lines between applications and services blurring
  • An interesting implication of mashups is in the area of transactions
  • 2PC / XA approaches of distributed transactions are simply impractical in large distributed services cloud especially on a WAN or across firewalls
  • Since technology is unlikely to help solve this problem, the solutions are going to come from remodeling the business logic.
  • eg. Long Running Business Transactions
  • Map reduce
  • Made popular by google
  • I see it increasingly used in the field of offline computations and analytics
  • Just earlier today AWS announced cluster compute instances : pair of quad core nodes with 10Gbps connectivity
  • The enterprise trails the internet
  • The momentum of architectural evolution is squarely with the internet applications
  • Browser platforms, Web 2.0, Social Networking, Cloud, REST, Mashups, NoSQL, Map Reduce are all internet contributions finding their way into the enterprise
  • Some other miscellaneous trends
  • Social Networking enters the enterprise
  • Geo tagging and Geo location databases
  • Oauth is the new authentication and authorisation system. Whither SAML ?
  • Javascript goes to the backend eg. node.js and V8
  • Fast Javascript engines allow high performance clients on the browser
  • Responsiveness starting to be a key requirement eg. Facebook Bigpipe
  • Design for extreme concurrency and long running connections eg. Tornado from Friendfeed
  • Thank You !