Sunday, August 30, 2015

Swift - An Interactive & open source attitude towards iOS programming by Apple - Is Apple aiming for write it once, run it anywhere?

Later this year, Apple will be making it's Swift programming language open source. The concept makes all the sense as it aims to re-invigorate and define new benchmarks across the mobile computing universe of phones, phablets and tablets. Of course, arguments were and will continue to be made regarding the market share of Apple vs the glut of Android based devices, however Swift may be a game changer. There have already been attempts at making a compiler that can convert Swift code into Java byte code that can then be converted into an Android Package (APK) for installation on Android Devices (Use Apple Swift to make an Android App). Once Swift is released as Open Source, there will definitely more attempts at this. Think about companies who would like to write it once and release their apps to both iOS and Android based devices.


Swift Playgrounds lets you see the results for every line of code that is typed. This lends itself naturally to viewing UI changes specially code snippets for an animated SpriteKit scene. Stay tuned for the Open Source Launch and get ready for a new mobile app development era.

Sunday, March 22, 2015

Quartz Scheduler vs. Spring Scheduler

Spring @scheduler vs. Quartz Scheduler


Spring Scheduler is a truly light weight implementation that will suffice for simple scheduling needs. If you are using Spring 3.0, it provides annotation support for both Task Scheduling and Asynchronous method execution.  Spring Scheduler provides support for

  • Task Scheduling using FixedRate (Run periodically at specific intervals even if previous execution did not finish) & FixedDelay (Delay the next execution of the task for a specific time frame after completion of last execution)
  • Cron expression based scheduling
On the contrary, Quartz Scheduler is a full fledged open source library that provides support for Job Scheduling. Its comparatively complex than Spring Scheduler but provides support for enterprise level features like JTA and clustering. It comes with JobPersistence support that can be extremely beneficial for failed jobs as well as reporting purposes.
  • With the use of the included JDBCJobStore, all Jobs and Triggers configured as "non-volatile" are stored in a relational database via JDBC.
  • With the use of the included RAMJobStore, all Jobs and Triggers are stored in RAM and therefore do not persist between program executions - but this has the advantage of not requiring an external database. 
Clustering feature of Quartz can be used for Fail-safe and/or Load Balancing purposes. However, recommended approach is to run the nodes in a cluster on the same machine. In case, you need to implement the cluster across multiple machines, a time sync service daemon like http://www.boulder.nist.gov/timefreq/service/its.htm should be used to ensure that clocks are synchronized between these machines that are part of the cluster.

In essence, if your goal is to implement a quick and basic form of job/task scheduling then Spring Scheduler will be ideal. On the other hand, if you need clustering as well as JobPersistence support then Quartz may serve better.




Responsibilities Of A Leader

Someone asked me about 3 key responsibilities of a leader, #ResponsibilitiesOfALeader    1) Be available to your team. Give priority to your...