Wednesday, 13 March 2013

OTN ADF Mobile Workshop @ Oracle Offices in Singapore


From marketing perspective this workshop gave a pretty good overview for what Oracle is doing in regards to concurring mobile platforms with Java. From technical perspective, the exercises we've done there were rather simple and could've been better ones - it would be more fun to build something with database connections and more sophisticated browsing.

Anyway, this is what was discussed about Oracle JDeveloper and its ADF Mobile Extension (ADF stands for Application Development Framework):




SOME MARKETING STUFF:


1. ADF Mobile components have sufficient number of widgets to build a decent application for iOS and Android from single code base.

2. Oracle implementation of mobile security seems to be the most shining component in the whole stack. Sorry, I can't say more than that because presentation of security features didn't really happen due to some technical issues.

3. Those who have experience working with Oracle ADF objects, could start doing things with Mobile ADF in no time at all.

4. Currently, Mobile ADF components can be used for generating application deployment packages only for iOS and Android. Windows 8 is not in the list. Not yet. Few years ago Oracle got ready for Windows 6 that had never come out! Now they want to wait and see if Windows 8 spills out of marketing campaigns and acquire some real popularity. If Windows 8 gets its market share, it would be relatively easy for Oracle, as they say, to accommodate it within their Mobile ADF.

5. GUI is done in Javascript, HTML5 and CSS3, so it's compatible with any current browser and mobile device. This is so called Hybrid Application when this kind of GUI works on top of a Java container that nicely communicates with whatever hardware is below. Platform-specific JVM is an old Java trick and in this case it's coupled with a widely used GUI technology.



SOME TECHNICAL STUFF:


1. Size of a final application ready to be deployed on a mobile OS would be around 10Mb+ because it includes headless Java Virtual Machine. JVM was cut off all GUI classes hence 'headless'. Basically, it's based on JavaME/JDK1.4 and has no Java5 features like collections and annotations.

2. Oracle mobile application would communicate with native OS and hardware resources (like email, camera, GPRS) via PhoneGap layer. Well, now it's PhoneGap but Oracle will switch it to Cordova because PhoneGap is owned by Adobe and there are some license related issues with that.

3. Mobile ADF Components are free only for developing prototypes. Any plans for using them within commercial products have to be discussed with Oracle sales people.



CONCERNS:


1. Every single mobile app built with Mobile ADF would come with its own JVM... Is that good? Or it doesn't matter? I'm not quite sure... Mobile operating systems are multi-threaded now. Some apps may run in the background tracking your location, popping up messages, making alerts. In a year time, an average phone might have, say, 25 apps constantly running in the background. Would it be good (size-wise, efficiency-wise) if some of them contain their own run-time environments? It's like to run few Eclipse IDEs at once on a desktop, isn't it?

2. Price is always the issue. Small businesses may not like it. Big businesses may stick to their existing development platforms, whatever they currently use.



ADVANTAGES:


Well, there are four actually:

1. Generation of hybrid-native deployment packages from a single code base. It does sound a bit scary, especially for those companies that already have separate iOS and Android development teams. Will that 'single code base' really work? Hmm... it's hard so say... but there is always an alternative - just start hiring Windows 8 team now.

2. Maybe it's true and Oracle mobile security solutions really stand out on the market (this needs to be confirmed...).

3. Millions of Java developers can apply their skills in mobile sector, and

4. The whole thing is backed by Oracle and it's not about to disappear from this market. What does that mean? Well, Cordova is open source - its future is not quite certain. PhoneGap belongs to a bit unpredictable Adobe - people still remember what they have done with Flex.


Probably it's time to check what ApplicationCraft is...

Friday, 8 February 2013

Microsoft Office on Linux in 2014?

What if it's true and after all we'll get a full version of Microsoft Office available on Linux platform? Let's see who are the main players in this space:


DESKTOP

1. OpenOffice.org (free)

2. LibreOffice (free)

3. SoftMaker Office ($79.95)

4. IBM Lotus Symphony (free, based on OpenOffice)


5. GNOME Office (free)


6. KOffice (free)


7. StarOffice (free)



8. Calligra (free)

9. Yozo Office ($59)
10. Breadbox ($99)


ONLINE

- Zoho Office ($3/user)
- ThinkFree Online Office ($49)
- Google Docs Office Suite (free)
- Microsoft Office 365 ($4-20 per user/month)
- CollateBox ($9.99-129.99/month for unlimited number of users)

It's pretty clear that Microsoft won't be alone out there. It would be quite interesting to see how competition would change the lists above.

Tuesday, 29 January 2013

Open Source Financial Trading Software

Some time in early 2012 an open source project Lodestone Foundation was backed by Deutsche Bank. In September, 2012 FT let it know to ones who missed the news earlier.

The initiative is quite interesting and it split finance professionals in two camps - ones who believe that this is the way to go and their counterparts who think it would never happen.

I've looked for any existing and more or less active projects in this space. This is what I found out so far:

1. OpenGamma (Java, R, .Net and REST APIs, Tools for MS Excel)


The OpenGamma Platform provides both buy-side and sell-side firms a rich set of features, including trade data management, live risk alerts, and sophisticated, dynamic Excel integration.


2. QuantLib (C++)


QuantLib project is aimed at providing a comprehensive software framework for quantitative finance. QuantLib is a free/open-source library for modeling, trading, and risk management in real-life. 

Possibly this is the most popular project at the moment, there are signs that it's quietly used by many quant developers in their day-to-day work.


3. Open Heartbeat (probably C/C++)


Open Heartbeat is a lightweight data distribution system designed primarily for collecting and distributing rapidly changing price quotes for stocks, securities or other distributable data sets.

The core component is a reusable library which manages all communication, synchronization  caching etc., which can be linked into applications that create or, more commonly, consume data.

Primarily aimed at the financial sector, as a way to distribute rapidly changing stock quotes etc., this system can be used for any application that needs to distribute volatile data sets reliably and efficiently.

This suite includes a sample feed handler for Yahoo financial data. Use of the data provided by this service is subject to the terms and conditions of the Yahoo real time stock quote service.

The library offers very efficient operation (~10,000 updates per second), redundant paths and automatic error recovery and reporting.

4. Eclipse Trader (Java)


EclipseTrader is an  Eclipse Rich Client Platform (RCP) application focused on the building of an online stock trading system, featuring shares pricing watch, intraday and history charts with technical analysis indicators, level II/market depth view, news watching, and integrated trading. 

The standard Eclipse RCP plug-ins architecture allows third-party vendors to extend the functionality of the program to include custom indicators, views or access to subscription-based data feeds and order entry.


5. QuickFX/J (Java)


The Financial Information eXchange (FIX) protocol is a messaging standard developed specifically for the real-time electronic exchange of securities transactions. FIX is a public-domain specification owned and maintained by FIX Protocol, Ltd (FPL).

QuickFIX/J is a fully featured messaging engine for the FIX protocol. It is a 100% Java open source implementation of the popular C++ QuickFIX engine.


6. Premium Markets (Java)


Premium Markets is an automated financial technical analysis system. 
It implements a graphical environment for monitoring financial technical analysis major indicators and for portfolio management.

In its advanced packaging (not provided under open-source license) it also includes :

  • Screening of financial web sites to pickup the best market shares, 
  • Forecast of share prices trend changes on the basis of financial technical analysis, (with a rate of around 70% of forecasts being successful observed while back testing over DJI, FTSE, DAX and SBF), 
  • Back testing and Email sending on buy and sell alerts triggered while scanning markets and user defined portfolios.


7. ojAlgo (Java)


ojAlgo is Open Source Java code that has to do with mathematics, linear algebra and optimization  Its feature set make it particularly suitable for use within the financial domain.

8. EWaveTrade (C++, MFC, Visual C++ Compiler)


EWaveTrade is a tool to aid in the process of analyzing market price data using the Elliot Wave Theory, particularly applying the concepts and principles developed by Glenn Neely. The book "Mastering Elliott Wave" by Glen Neely is recommended for both potential developers and users of this software.

9. QChartist (Qt, Basic)


QChartist is a free charting software designed to do technical analysis from any data. The program is written in Basic language.

10. jFin (Java)


Pure Java lib that provides:
  • Date adjustment
  • Schedule generation
  • Day count fraction calculation

11. ActiveQuant (Java, ActiveMQ, HSQL)


ActiveQuant is an entire framework to backtest and run automated trading systems. This project is an open source project, but is not a free software, it is provided free of charge to academics and hobbyists.

12. Akutan (Java)


Akutan is an open source finance project working in the asset allocation, portfolio analysis arena of financial informatics. For the most part it stays away from instrument valuation and market models given that there are several other projects dedicated to that space, e.g. quantlib.

13. Net Positions


Net Positions allows to receive current and historical data about net positions(*) and opened on the futures market (info is taken from 'Commitments of Traders' weekly report). 

(*) net position is the difference between total open long and open shot positions.


14. Credit Analytics


CreditAnalytics is a full-featured financial fixed income credit analytics, trading, and risk library, developed with a special focus towards the needs of the credit products community. In particular, CreditAnalytics provides analytics to value liquid products (CDS, CDX, CDO, and bonds of all types and variants) and standard index/custom products (single credit forwards and options, and portfolio credit forwards, options, tranches, and other structures).


15. FpML



FpML® (Financial products Markup Language) is the open source XML standard for electronic dealing and processing of OTC derivatives. It establishes the industry protocol for sharing information on, and dealing in, financial derivatives and structured products.

The standard is developed under the auspices of ISDA, using the ISDA derivatives documentation as the basis. As a true open standard, the standards work is available to all at no cost and open to contribution from all. There is no membership requirement.

The standard evolution and development is overseen and managed by the FpML Standards committee, following W3C rules of operations guidelines.


16. Kooderive


The objective of this project is to create a library of code for pricing financial derivatives products using CUDA to achieve GPU programming.

Tuesday, 22 January 2013

Guidelines for Business Requirements Document

Trying to avoid thick Business Requirements Document (BRD) together with Functional Specification Document (FSD) as well as to shorten the time frame needed for preparing both of them, I compiled a document template that happened to be quite useful in a number of projects.

The idea is to take business project participants away from long verbal, and sometimes even inconsistent and confusing, descriptions and let them get concentrated on four basic models that clearly define what and how a new system should do. The models are:

- Use Case Model
- Domain Model
- Workflow Model, and
- GUI Model

On top of these four models, a development team would build an IT Model (or Implementation Model). Basically, these four models help to align Business Model with IT Model avoiding possible misunderstandings in communication between business analysts, software developers and system testers.

Document template could be downloaded here.

Wednesday, 9 January 2013

Who would provide Mobile Services for The Enterprise?

B.Y.O.D. is now an important part of an urban lifestyle description. Thanks to powerful mobile devices, online shopping (aka eCommerce) caught its second wind (look at Australia for example). Brick and mortal retail stores are getting obsolete, warehouses nearby large cities became hot properties. Rumors say that small businesses in Europe are happy to pay 2-5K Euros to teen developers for opening their own internet shops. Online payment services flourish. Clearly mobile networks are getting busier than ever (no refs to telcos income numbers). But what happens in the Enterprise?

Well, apparently biggest consumers of IT services, banks and telcos (no idea about military and aeronautics), don't have an access to their systems from mobile devices standardized yet. Yes, there are BlackBerries, iPhones and Androids with their connections to corporate Outlook Exchange servers, something that existed for quite awhile with no major upgrades. Now it looks even a bit ugly when people keep in their pockets two phones - one corporate BlackBerry and a personal 'iDroid'. How long is it going to stay this way? What do enterprise people need?

The Enterprise needs its own 'eCommerce' - synchronized data (mails, documents, etc - you name it), visual monitoring of various kinds that would help to replace every day email tsunamis, highly secure access to core functional services for those who are on-the-go or on-the-meeting. They need James Bond kind of things demonstrated in latest movies with Daniel Craig. The question is - who could deliver such services?

There are three major players in this space - Apple, Google and Microsoft. I'm not sure what's happening in China and Japan, they might have their own ones. There is also Samsung but I don't think that it could be listed here. Samsung is a good hardware producer but without its own OS and integration software it cannot compete with three from above.

To make a long story short, I would not go through what Apple and Google already have and what they may offer for this in near future. I think that Microsoft has all the chances to be a favorite again. Why? Because:

1. The Enterprise uses Windows desktops and it will continue to do that.

2. Windows Server is slowly becoming a standard platform for back-end processing. Yes, Microsoft dropped the ball at the server-side space and couldn't pick it up for a decade or so. That's probably why Linux became so popular. But Microsoft learnt its lesson - look at Windows Server 2012, check what and how it does. It is not that bad at all. I worked with Linux since late 90s and last two years spent using both Linux and Windows Servers, I don't really see any advantages of using one over the other except for the license cost and security.

3. Microsoft has its own mobile touch screen. Yes, iPad looks great, I completely agree with that, I love Apple devices and use them everywhere except my work. As the matter of fact, Apple taught people to use touch screens, all generations apparently. Now Microsoft made similar device but practically better - it comes with a keyboard. It doesn't look that sexy yet, just give it a time.

4. Microsoft has its own mobile OS. Well, it's comparatively new and hasn't become popular yet. But people will get used to it. The Enterprise will do its thinking and allocate the budget...

5. Microsoft has its own Cloud.

6. And it has Windows Intune to manage all listed above.

It seems that Microsoft has a complete technology stack to make 'James Bond' real in a company even if its employees travel 100% of their time. And the number of employees doesn't really matter.

I wonder if it's time to buy Nokia shares, their price is amazingly low at the moment... Is anyone up for a Jim Rogers kind of investment?

Monday, 10 December 2012

From Java to C++


This is not about hard-core low-level programming that targets speed and next-to-none h/w resources allocation. This is about development of applications that have clever and sometimes complex GUIs, use remote services and often run in geographically distributed environments. This is about the market segment where Java dominated for more than a decade.

So, what's happening to Java? Is its community eroding? There are less articles about Java innovations on www.infoq.com, a used to be a 100% Java portal www.dzone.com now discusses other languages as well (although it seems that Scala, Groovy and Grails are among their favorites, they talk more and more about other technologies - look at their recent RefCardz), you could  probably find other examples that indicate decline of activity in Java world.



How did it happen? Well:

- first Steve Jobs called Java heavyweight,

- then C++ 11 has been finalized and people got inspired with it,

- then Intel offered C/C++ and Fortran compilers (no Java!) for its new Intel® Xeon Phi CPU

- Java didn't become a big friend of Microsoft Windows 8 Metro.


It seems that Java looses its pace and gives the way to C++ now. This is why it could be true:

- It happened to be that C++ is a good choice for parallel programming now. Multi-core Intel CPUs is about to hit the mass market - 50 cores (or so) per CPU isn't a joke, it's just a beginning. Moreover, they come with Intel owned C++ development kit for parallel programming that includes testing and profiling tools as well. I think this is big.

- Java is not a competitor to C++ in parallel programming. There is activity around CUDA (GPUs) and Eralng - although these two didn't really widespread around the globe, there is no similar activity in Java world.

- C++ binaries could be easily decorated with a nice GUI in two most popular platforms - Windows and OSX. Java doesn't have that luxury.

Let's have a closer look at GUIs, server side, virtualization and possible future trends.

GUI

Apparently, Java doesn't have a good techno for that... Swing is good but tedious to use. Building apps on top of Eclipse RPC or NetBeans for some reason didn't become trendy. Adobe Flex GUIs have just started gaining the ground in the enterprise but at the end of last year Adobe decided to dump it to Apache and concentrate on HTML5 instead - this move came out of the blue and blowed away the whole community. With a certain pressure for HTML5 that comes from everywhere (Google, Microsoft and even Intel!), Flex is not likely to recover any time soon... Flex was very good when coupled with Java... was... Amen.

On the other hand, Microsoft WPF GUIs backed up by C# and C++ libraries are spreading everywhere like a virus. One of their buy-me features is tight integration with Excel - cut-n-paste between these two looks incredibly natural! And whatever happens, Excel is not to disappear any time soon. WPF app could be standalone bundled with C++ or Excel libs or tailored to run in a web browser as well (yes, with Silverlight). It worth to mention that it's supported by Microsoft, so from a tight-ass architect's perspective it's a win-win game.

Qt (another C++-friendly GUI framework) was a cute kid with a very promising future. It could even face WPF on the open battle field unless Nokia let it go to Digia. Nevertheless, Qt is still here and its GUIs for Linux apps look pretty good.

So, we've got a pretty seamless technology stack here - multi-cores CPUs with C++ dev kits and extremely C++ friendly GUI frameworks that run nicely on most popular platforms. And if we talk about the finance (that pays a lot for IT services), add to this a bunch of available Quant libs and other products like popular middleware and databases that usually either written in C/C++ or C/C++ friendly.

Server Side

Is Java the only choice for server side programming? Apparently popular technologies on the server side are PHP/CGI, Python, .NET and Java. And Ruby. And JavaScript now. There are more and more competitors to Java in this area. If Java wouldn't get a boost, it could be eventually pushed out. Oracle should be interested in keeping Java up there as Java would provide it with a perfect web access to its database products. This nicely fits to a vision to make Java super-powerful db language. Well, web-db language. Would Oracle spend money for more than that?

There were rumors that Oracle might convert Java into an incredibly powerful database and middleware language. It might not be a bad idea! Java could go there, couldn't it? Otherwise, multi-threading model on JVM level may need to be refreshed. Is that a significant investment? It could be... Microsoft is already busy doing this kind of things. Does Oracle do the same?

Furthermore, it's questionable how many Quant strategies and algo-trading systems would be created during the next 10 years (Java is often used for this money-making machines along with C++ and some scripting languages), but it seems that BI presents a wave comparable with tsunami. BI is all about data (searching, indexing, mining, analyzing, you name it...) and parallel programming for it is the must. So, it's easy to assume that in a very near future the server side would be heavily paralleled, participants would be crumbling through their massive data storages like small Googles. And they will need to be C++ friendly because Intel wants them to.

It looks that Java isn't the king on the server side anymore... Maybe Mother Queen?

Virtualization

Enterprise architects loved Java because of its JVM. It's like to have a standalone computer inside your production system. It's easier to make it secure compare to PHP or Python scripts, for example. I guess, this is why big companies liked it and kept paying for Java evolution. And this is probably where Microsoft dropped the ball.

But that was in the past, Windows Server 2012 made it happen, virtualization level could be selected and tuned as required now. Does it hurt Java perspectives? Yes, I think, it does.

Future Trends 

It could be time for program converters. Say, you build stuff in some real or pseudo language and then generate Web, Windows (.NET) or OSX (Objective-C) applications from it. Something like, GWT (generates JavaScript from Java), or ZK (also generates JavaScript from Java). I like Embarcadero and think that currently it's the best for development of standalone applications that target deployments on different platforms.

Will Java be a leader in this space? Will it be the leader anywhere else? I'm not sure... I think, after using Java non-stop during last 10 years, I'm loosing a point to keep doing that as there are so many alternatives.

Conclusion

Java was fun, like a roller coaster with its ups and downs. Well, it was a pretty quick run though, just slightly more than a decade. And now it's done (meaning it's not evolving anymore as it used to be). Yes, number of LOCs written in Java is beyond the mind, but I guess you should admit that at any time in its history 50-70% of Java code was already obsolete because of new versions of SDK, new frameworks, and others... People just kept writing more... More and more people apparently... 

In regards to a new evolution stage in programming history that we are entering into, parallel processing is going be the norm, C++ with its friendly peers has all the rights to be the king again. They will get a massive number of improvements on the way, no doubts about that. 

The king is dead, long live the king!

Online Encyclopedia of Statistical Science (Free)

Please, click on the chart below to go to the source: