tag:blogger.com,1999:blog-71805449938779362152024-03-13T23:55:37.274-07:00Innovation is RevolutionJay Shahhttp://www.blogger.com/profile/04995571037082697053noreply@blogger.comBlogger32125tag:blogger.com,1999:blog-7180544993877936215.post-4909176252440537422023-11-08T20:56:00.003-08:002023-11-08T20:56:29.866-08:00Unleashing the Power of Fractional CTOs: The Future of Tech Leadership<p><span style="background-color: white;"> <span style="font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; white-space-collapse: preserve;">In today's fast-paced business landscape, staying ahead in the technology race is crucial for companies of all sizes. Enter the fractional Chief Technology Officer (CTO), a game-changing concept that is reshaping the way businesses approach technology leadership.</span></span></p><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 1.25em 0px; white-space-collapse: preserve;"><span style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; background-color: white; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-weight: 600;">Why Fractional CTOs?</span></p><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 1.25em 0px; white-space-collapse: preserve;"><span style="background-color: white;">Gone are the days when a full-time CTO was the only option for businesses seeking tech expertise. The fractional CTO model offers a flexible and cost-effective alternative, allowing companies to tap into a wealth of specialized knowledge without the commitment of a full-time hire.</span></p><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 1.25em 0px; white-space-collapse: preserve;"><span style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; background-color: white; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-weight: 600;">A Cost-Effective Solution</span></p><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 1.25em 0px; white-space-collapse: preserve;"><span style="background-color: white;">For startups and small to medium-sized enterprises (SMEs), hiring a full-time CTO can be a hefty investment. Fractional CTOs bridge this gap, offering top-tier expertise on a part-time or contract basis. This approach not only saves costs but also provides access to a level of technical leadership that might otherwise be out of reach.</span></p><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 1.25em 0px; white-space-collapse: preserve;"><span style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; background-color: white; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-weight: 600;">Tailored Expertise, When You Need It</span></p><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 1.25em 0px; white-space-collapse: preserve;"><span style="background-color: white;">Fractional CTOs bring a laser-focused expertise to the table. Whether it's solving specific technical challenges or charting a course for future growth, these seasoned professionals offer the precise skills required for the job. Their experience spans a diverse range of industries and technologies, making them invaluable assets for companies looking to make strategic technology decisions.</span></p><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 1.25em 0px; white-space-collapse: preserve;"><span style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; background-color: white; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-weight: 600;">Flexibility for Every Stage of Your Business</span></p><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 1.25em 0px; white-space-collapse: preserve;"><span style="background-color: white;">In the dynamic world of startups and SMEs, needs can change rapidly. Fractional CTOs provide the flexibility to scale their involvement in sync with your business's evolving demands. This adaptability ensures that you get the right level of expertise precisely when you need it, without overextending your resources.</span></p><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 1.25em 0px; white-space-collapse: preserve;"><span style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; background-color: white; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-weight: 600;">Objective Insights for Informed Decision-Making</span></p><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 1.25em 0px; white-space-collapse: preserve;"><span style="background-color: white;">An external perspective can be a game-changer when it comes to making critical technology decisions. Fractional CTOs offer unbiased advice, free from internal politics or vested interests. This objectivity leads to more effective and strategic technology choices that align with your business goals.</span></p><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 1.25em 0px; white-space-collapse: preserve;"><span style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; background-color: white; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-weight: 600;">A Network of Possibilities</span></p><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 1.25em 0px; white-space-collapse: preserve;"><span style="background-color: white;">Fractional CTOs often come armed with an extensive professional network. This valuable resource can open doors to potential talent, collaborations, and partnerships in the tech space. Leveraging their connections can provide a competitive edge in sourcing the right resources for your projects.</span></p><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 1.25em 0px; white-space-collapse: preserve;"><span style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; background-color: white; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-weight: 600;">Mitigating Risk, Maximizing Impact</span></p><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 1.25em 0px; white-space-collapse: preserve;"><span style="background-color: white;">The fractional CTO model offers a level of risk mitigation that can be a lifeline for companies navigating uncertain terrain. If the partnership doesn't yield the desired results, parting ways with a contract-based arrangement is typically smoother and less disruptive than severing ties with a full-time employee.</span></p><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 1.25em 0px; white-space-collapse: preserve;"><span style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; background-color: white; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-weight: 600;">Embracing Best Practices</span></p><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 1.25em 0px; white-space-collapse: preserve;"><span style="background-color: white;">With experience spanning various industries and companies, fractional CTOs bring a wealth of best practices to the table. They introduce proven approaches to technology development and management, elevating your business's tech game to new heights.</span></p><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 1.25em 0px 0px; white-space-collapse: preserve;"><span style="background-color: white;">In conclusion, fractional CTOs represent the future of tech leadership, offering a potent blend of expertise, flexibility, and cost-effectiveness. For startups and SMEs, this model provides a strategic advantage in navigating the complex world of technology. By tapping into the power of fractional CTOs, businesses can drive innovation, make informed decisions, and position themselves for success in today's tech-driven landscape.</span></p>Jay Shahhttp://www.blogger.com/profile/04995571037082697053noreply@blogger.com0tag:blogger.com,1999:blog-7180544993877936215.post-9112921997745134422017-03-22T03:59:00.001-07:002017-03-23T01:09:02.806-07:00NGNIX vs Apache vs Node<div dir="ltr" style="text-align: left;" trbidi="on">
Architectural decisions are always hard to make but the most crucial ones when it comes to server architecture and technology selection. This article is meant to make few of them a bit simpler.<br />
<br />
Let us compare Apache, NGNIX and Node and help everyone give an insight to make a right decision.<br />
<br />
<div dir="ltr" style="line-height: 1.92; margin-bottom: 0pt; margin-top: 0pt;">
<span style="color: #333333; font-family: "georgia"; font-size: 11.5pt; vertical-align: baseline; white-space: pre-wrap;">Apache and Nginx are both </span><span style="color: #333333; font-family: "georgia"; font-size: 11.5pt; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;">HTTP servers</span><span style="color: #333333; font-family: "georgia"; font-size: 11.5pt; vertical-align: baseline; white-space: pre-wrap;">. They can serve static files like (.jpg and .html files) or dynamic pages (like a Wordpress blog or forum written in a language like Java, PHP or Python). Apache/nginx need to be configured to recognize the URLs that users will be requesting and route them to the right place.</span></div>
<span id="docs-internal-guid-5f4f6010-f5a5-f38e-bdd9-b845bffd2066"><br /></span>
<br />
<div dir="ltr" style="line-height: 1.92; margin-bottom: 0pt; margin-top: 0pt;">
<span style="color: #333333; font-family: "georgia"; font-size: 11.5pt; vertical-align: baseline; white-space: pre-wrap;">So, for example, with a typical Java Application you tell Apache that any file that ends with .jsp should be interpreted as Java code, so when the user visits "http://javaexpert.com/java.jsp?q=training", for example, Apache will launch the Java interpreter (JVM) to read the file and process it. As part of this process, Java Controller may talk to a MySQL database and use that to generate the page. Lastly, Tomcat Container gives the final Java Embeded HTML Code to Apache to send to the user's browser.</span></div>
<br />
<div dir="ltr" style="line-height: 1.92; margin-bottom: 0pt; margin-top: 0pt;">
<span style="color: #333333; font-family: "georgia"; font-size: 11.5pt; vertical-align: baseline; white-space: pre-wrap;">Sounds simple correct? </span></div>
<br />
<div dir="ltr" style="line-height: 1.92; margin-bottom: 0pt; margin-top: 0pt;">
<span style="color: #333333; font-family: "georgia"; font-size: 11.5pt; vertical-align: baseline; white-space: pre-wrap;">Now, Node is a bit different. It's a programming environment like PHP that lets you talk to database, make dynamic pages, etc. However, it differs in that it </span><span style="color: #333333; font-family: "georgia"; font-size: 11.5pt; font-style: italic; vertical-align: baseline; white-space: pre-wrap;">includes an HTTP server. </span><span style="color: #333333; font-family: "georgia"; font-size: 11.5pt; vertical-align: baseline; white-space: pre-wrap;">That means that it can actually act completely on its own without nginx or Apache. You can just run Node and it will be the HTTP server and also the "app server" (which actually creates your dynamic pages and talks to the DB).</span></div>
<br />
<div dir="ltr" style="line-height: 1.92; margin-bottom: 0pt; margin-top: 0pt;">
<span style="color: #333333; font-family: "georgia"; font-size: 11.5pt; vertical-align: baseline; white-space: pre-wrap;">It's bullseye deal ! </span><span style="color: #333333; font-family: "georgia"; font-size: 11.5pt; vertical-align: baseline; white-space: pre-wrap;"><br class="kix-line-break" /></span></div>
<div dir="ltr" style="line-height: 1.92; margin-bottom: 12pt; margin-top: 0pt;">
<span style="color: #333333; font-family: "georgia"; font-size: 11.5pt; vertical-align: baseline; white-space: pre-wrap;">Now let us get into more in detail of each one of them and compare them. </span></div>
<div dir="ltr" style="line-height: 1.92; margin-bottom: 12pt; margin-top: 0pt;">
<span style="color: #333333; font-family: "georgia"; font-size: 11.5pt; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;">Apache</span></div>
<div dir="ltr" style="line-height: 1.92; margin-bottom: 12pt; margin-top: 0pt;">
<span style="color: #333333; font-family: "georgia"; font-size: 11.5pt; vertical-align: baseline; white-space: pre-wrap;">Apache's architecture simplicity : </span></div>
<div dir="ltr" style="line-height: 1.92; margin-bottom: 12pt; margin-top: 0pt;">
<span style="color: #333333; font-family: "georgia"; font-size: 11.5pt; vertical-align: baseline; white-space: pre-wrap;">Apache debuted in 1995 and in those days the web pages were very simple and the traffic was very low.</span></div>
<div dir="ltr" style="line-height: 1.92; margin-bottom: 12pt; margin-top: 0pt;">
<span style="color: #333333; font-family: "georgia"; font-size: 11.5pt; vertical-align: baseline; white-space: pre-wrap;">Apache's architecture was pretty simple for each new request a new process of correct type was spawned to handle the HTTP connection. The process would receive the request, process the request, make a response and return the response. The architecture was pretty simple and apache adopted it, there was very big downside to it we will discuss it in next paragraph. To make the process of spawning faster apache adopted a </span><span style="color: #333333; font-family: "georgia"; font-size: 11.5pt; font-style: italic; vertical-align: baseline; white-space: pre-wrap;">prefork</span><span style="color: #333333; font-family: "georgia"; font-size: 11.5pt; vertical-align: baseline; white-space: pre-wrap;"> model a number of processes were pre-spawned and they would process the HTTP connection as soon as the requests were made.</span></div>
<div dir="ltr" style="line-height: 1.92; margin-bottom: 12pt; margin-top: 0pt;">
<span style="color: #333333; font-family: "georgia"; font-size: 11.5pt; vertical-align: baseline; white-space: pre-wrap;">So each request was handled by a separate process but by 2005 the web traffic was increasing at a very high rate and the web pages were becoming more and more complex and to decrease the web page load time what was earlier a single request to the server was broken down into multiple requests and each request was made in parallel so that the resources could be downloaded in parallel and moreover browser would keep these connections open using keep-alive header. So apache's basic architecture of one process for one request soon started to consume the entire memory and crash.</span></div>
<div dir="ltr" style="line-height: 1.92; margin-bottom: 12pt; margin-top: 0pt;">
<span style="color: #333333; font-family: "georgia"; font-size: 11.5pt; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;">Nginx :</span></div>
<div dir="ltr" style="line-height: 1.92; margin-bottom: 12pt; margin-top: 0pt;">
<span style="color: #333333; font-family: "georgia"; font-size: 11.5pt; vertical-align: baseline; white-space: pre-wrap;">NGINX was written specifically to address the performance limitations of Apache web servers. It was created in 2002 by Igor Sysoev, a system administrator for a popular Russian portal site (</span><a href="http://rambler.ru/" style="text-decoration-line: none;"><span style="color: #2b6dad; font-family: "georgia"; font-size: 11.5pt; vertical-align: baseline; white-space: pre-wrap;">Rambler.ru</span></a><span style="color: #333333; font-family: "georgia"; font-size: 11.5pt; vertical-align: baseline; white-space: pre-wrap;">), as a scaling solution to help the site manage greater and greater volumes of traffic. It was open sourced in October 2004.</span></div>
<div dir="ltr" style="line-height: 1.92; margin-bottom: 12pt; margin-top: 0pt;">
<span style="color: #333333; font-family: "georgia"; font-size: 11.5pt; vertical-align: baseline; white-space: pre-wrap;">The success of Nginx is attributed to its architecture. Nginx follows an asynchronous event driven model for handling requests. Each worker can handle number of requests.</span></div>
<div dir="ltr" style="line-height: 1.92; margin-bottom: 12pt; margin-top: 0pt;">
<span style="color: #333333; font-family: "georgia"; font-size: 11.5pt; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;">Question is what is event based model and what is relation of event based model with a worker handling multiple number of request ?</span></div>
<div dir="ltr" style="line-height: 1.92; margin-bottom: 12pt; margin-top: 0pt;">
<span style="color: #333333; font-family: "georgia"; font-size: 11.5pt; vertical-align: baseline; white-space: pre-wrap;">So suppose hypothetically we have only one worker on the nginx server. So nginx server maintains a queue for all the requests. It picks up the request if no I/O is required for that request it does the processing and returns the request with a response.</span></div>
<div dir="ltr" style="line-height: 1.92; margin-bottom: 12pt; margin-top: 0pt;">
<span style="color: #333333; font-family: "georgia"; font-size: 11.5pt; vertical-align: baseline; white-space: pre-wrap;">If the request has an I/O the a process is spawned for it at this point asynchronous behaviour and event driven behaviour comes into picture. The web worker does not waits for I/O to complete it moves to next request. What happens to the I/O the I/O on completion fires an event of completion and its callback is placed in queue for execution.</span></div>
<div dir="ltr" style="line-height: 1.92; margin-bottom: 12pt; margin-top: 0pt;">
<span style="color: #333333; font-family: "georgia"; font-size: 11.5pt; vertical-align: baseline; white-space: pre-wrap;">So in this way one web worker is able to handle multiple number of requests and generally on Nginx server there are number of workers or processes.</span></div>
<div dir="ltr" style="line-height: 1.92; margin-bottom: 12pt; margin-top: 0pt;">
<span style="color: #333333; font-family: "georgia"; font-size: 11.5pt; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;">Node.js :</span></div>
<div dir="ltr" style="line-height: 1.92; margin-bottom: 12pt; margin-top: 0pt;">
<span style="color: #333333; font-family: "georgia"; font-size: 11.5pt; vertical-align: baseline; white-space: pre-wrap;">What JVM is to java, node.js is to javascript. It allows us to use javascript as a language for scripting on servers.</span></div>
<div dir="ltr" style="line-height: 1.92; margin-bottom: 12pt; margin-top: 0pt;">
<span style="color: #333333; font-family: "georgia"; font-size: 11.5pt; vertical-align: baseline; white-space: pre-wrap;">Ryan Dahl creator of Node.js was impressed by Nginx and looked at javascript which was made with asynchronous and event based model. He used google V8 engine which is used in chrome to process Javascript and created Node.js.</span></div>
<div>
<span style="color: #333333; font-family: "georgia"; font-size: 11.5pt; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
</div>
Jay Shahhttp://www.blogger.com/profile/04995571037082697053noreply@blogger.com0tag:blogger.com,1999:blog-7180544993877936215.post-64299804611929023882016-12-19T11:27:00.001-08:002016-12-19T22:23:06.303-08:00Creative Connect - Shop, meet and engage ! <div dir="ltr" style="text-align: left;" trbidi="on">
<iframe src="//www.slideshare.net/slideshow/embed_code/key/oqVh44E58Y3Vzx" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe> <div style="margin-bottom:5px"> <strong> <a href="//www.slideshare.net/jd04cp612/creative-connect-clients-70291315" title="Creative Connect Clients" target="_blank">Creative Connect Clients</a> </strong> from <strong><a target="_blank" href="//www.slideshare.net/jd04cp612">Jay Shah</a></strong> </div>
<br /></div>
Jay Shahhttp://www.blogger.com/profile/04995571037082697053noreply@blogger.com0tag:blogger.com,1999:blog-7180544993877936215.post-22430193407049723952016-10-17T09:12:00.000-07:002016-10-17T09:15:49.336-07:00Creative Connect - Brilliant Concept !<div dir="ltr" style="text-align: left;" trbidi="on">
<iframe src="https://docs.google.com/presentation/d/1H5H_l67hvTc0rP6upuxkswwWXpHDLm46PRS0L9-HYFQ/embed?start=false&loop=false&delayms=3000" frameborder="0" width="570" height="575" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true"></iframe>
<br /></div>
Jay Shahhttp://www.blogger.com/profile/04995571037082697053noreply@blogger.com0tag:blogger.com,1999:blog-7180544993877936215.post-60751835419038799592016-05-09T21:17:00.002-07:002016-05-09T22:32:06.490-07:00iBeacon is a protocol and Beacons are Devices<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="text-align: left;">
iBeacon and Beacons</h2>
<div>
<br /></div>
<div>
<h3 style="text-align: left;">
Get the basics</h3>
</div>
<div>
<br /></div>
<div>
<b style="background-color: white; font-family: sans-serif; font-size: 14px; line-height: 22.4px;">iBeacon</b><span style="background-color: white; font-family: sans-serif; font-size: 14px; line-height: 22.4px;"><b> is a protocol</b> developed by </span><span style="font-family: sans-serif;"><span style="background: none rgb(255, 255, 255); font-size: 14px; line-height: 22.4px;">Apple</span></span><span style="background-color: white; font-family: sans-serif; font-size: 14px; line-height: 22.4px;"> and introduced at the </span><span style="font-family: sans-serif;"><span style="background: none rgb(255, 255, 255); font-size: 14px; line-height: 22.4px;">Apple Worldwide Developers Conference</span></span><span style="background-color: white; font-family: sans-serif; font-size: 14px; line-height: 22.4px;"> in 2013.</span><span style="background-color: white; font-family: sans-serif; font-size: 14px; line-height: 22.4px;"> </span></div>
<div>
<span style="background-color: white; font-family: sans-serif; font-size: 14px; line-height: 22.4px;"><br /></span></div>
<div>
<span style="background-color: white; font-family: sans-serif; font-size: 14px; line-height: 22.4px;">Several vendors have since made iBeacon-compatible hardware transmitters - typically called <b>beacons </b>- a class of </span><span style="font-family: sans-serif;"><span style="background: none rgb(255, 255, 255); font-size: 14px; line-height: 22.4px;">Bluetooth low energy</span></span><span style="background-color: white; font-family: sans-serif; font-size: 14px; line-height: 22.4px;"> (LE) devices that broadcast their identification to nearby </span><span style="font-family: sans-serif;"><span style="background: none rgb(255, 255, 255); font-size: 14px; line-height: 22.4px;">portable electronic</span></span><span style="background-color: white; font-family: sans-serif; font-size: 14px; line-height: 22.4px;"> devices such as smartphones,tablets, etc. These devices in turn perform specific actions based on the identification they receive.</span></div>
<div>
<span style="background-color: white; font-family: sans-serif; font-size: 14px; line-height: 22.4px;"><br /></span></div>
<div>
<span style="background-color: white; color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px;">Applications in the healthcare, </span><span style="background-color: white; color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px;">fitness (FitBit is an example)</span><span style="background-color: white; color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px;">, beacons,</span><span style="background-color: white; color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px;"> security, and home entertainment industries</span><span style="background-color: white; font-family: sans-serif; font-size: 14px; line-height: 22.4px;"> are based on iBeacon Bluetooth Low Energy technology.</span></div>
<div>
<span style="background-color: white; font-family: sans-serif; font-size: 14px; line-height: 22.4px;"><br /></span></div>
<div>
<div style="text-align: left;">
<span style="background-color: white; color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px;">Beacons </span><span style="background-color: white; color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px;">transmit a UUID(Universally Unique Identifier)</span><span style="background-color: white; color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px;"> picked up by a compatible app or operating system. The identifier and several bytes sent with it can be used to determine the device's physical location,</span><span style="background-color: white; font-family: sans-serif; font-size: 14px; line-height: 22.4px;"><span style="color: #252525;"> track customers,</span> or trigger a </span>location-based<span style="background-color: white; font-family: sans-serif; font-size: 14px; line-height: 22.4px;"> action on the device such as a </span>check-in on social media<span style="background-color: white; font-family: sans-serif; font-size: 14px; line-height: 22.4px;"> or a </span>push notification<span style="background-color: white; font-family: sans-serif; font-size: 14px; line-height: 22.4px;">.</span></div>
<div style="text-align: left;">
<span style="background-color: white; font-family: sans-serif; font-size: 14px; line-height: 22.4px;"><br /></span></div>
<h3 style="text-align: left;">
<span style="background-color: white; font-family: sans-serif; font-size: small; line-height: 22.4px;">Power Consumption</span></h3>
</div>
<div>
<div style="background-color: white; color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px; margin-bottom: 0.5em; margin-top: 0.5em;">
The Bluetooth LE protocol is significantly more power efficient than Bluetooth Classic. Several chipsets makers now supply chipsets optimized for iBeacon use. Power consumption depends on iBeacon configuration parameters of advertising interval in ms and transmit power. A study on different iBeacon vendors reports that battery life can range between 1–24 months. Apple's recommended setting of 100 ms advertising interval with a coin cell battery provides for 1–3 months of life, which increases to 2–3 years as advertising interval is increased to 900 ms.</div>
<div style="background-color: white; color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px; margin-bottom: 0.5em; margin-top: 0.5em;">
Battery consumption of the phones is a factor that must be taken into account when deploying beacon enabled apps. A recent report has shown that older phones tend to draw more battery in the vicinity of iBeacons, while the newer phones can be more efficient in the same environment. An energy efficient iBeacon application needs to consider these aspects in order to strike a good balance between app responsiveness and battery consumption.</div>
<div style="background-color: white; color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px; margin-bottom: 0.5em; margin-top: 0.5em;">
<br />
<h3 style="text-align: left;">
Use cases</h3>
<br />
Today’s mobile technology advancements are the key.
With branded mobile apps coupled with location-based
mobile technologies, you can create a compelling,
satisfying, and exciting customer experience in ways not
possible just a few months ago.<br />
<br />
• Surprise and delight customers with personalized
welcome messages, promotions and discounts as
they arrive at your stores.<br />
• When shoppers approach a new in-store display,
automatically trigger pop-up videos, coupons or
other information related to the merchandise.<br />
• Help shoppers navigate the store with turn-by-turn
directions so they can find what they’re looking for
and not leave empty-handed.<br />
• Engage shoppers when they are not at the store and
encourage them to come back.<br />
<br /></div>
<h3 style="background-color: white; margin-bottom: 0.5em; margin-top: 0.5em; text-align: left;">
<b style="color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px;">Wohooo Google is also into iBeacon </b><span style="background-color: transparent; font-size: 14px; line-height: 22.4px;"><span style="color: #252525; font-family: sans-serif;">comparison and much better</span></span></h3>
</div>
<div>
<span style="background-color: white; color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px;">Apple’s iBeacon technology and Google’s Eddystone is this: iBeacon can only communicate with apps, whereas Eddystone works across apps and browsers</span><br />
<span style="background-color: white; color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px;"><br /></span>
<span style="background-color: white; color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px;">It would be interesting to see how the world will been changing their routes around IoT and Beacons will play a significant role in proximity based search and notification. </span><br />
<span style="background-color: white; color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px;"><br /></span>
<br />
<br />
<b>Feel free to post your valuable comments in form of feedback and questions for me to answer.</b></div>
</div>
Jay Shahhttp://www.blogger.com/profile/04995571037082697053noreply@blogger.com6tag:blogger.com,1999:blog-7180544993877936215.post-86022042130375270102015-11-06T01:05:00.001-08:002016-05-09T21:18:10.141-07:00Send Email Using Java Mail API<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<br /></div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
Lot you might find this post really handy as it has been so many instances that you find one or the other issues with the email sending using Java Mail API. Following code is working perfectly fine with no errors. Please replace placeholders with your concerned credentials, sender and recipients. Do not forget to download mail.jar and activation.jar which are part of Java Mail API and Activation framework. </div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<br /></div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
Just make sure you check the credentials you are providing for authentication have following things enabled under URL : <a href="http://myaccount.google.com/security">http://myaccount.google.com/security</a></div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<br /></div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
1. Enable <b>"A<span style="background-color: white; color: #181818; font-family: "roboto" , "robotodraft" , "helvetica neue" , "arial" , sans-serif;">llow less secure apps"</span></b></div>
<div style="font-size: 16px;">
<span style="color: #181818; font-family: "roboto" , "robotodraft" , "helvetica neue" , "arial" , sans-serif;"><span style="background-color: white;">2. 2-Step Verification <b>Off</b></span></span></div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<br /></div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<br /></div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<br /></div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<div>
import java.util.*;</div>
<div>
<br /></div>
<div>
import javax.mail.*;</div>
<div>
import javax.mail.internet.*;</div>
<div>
import javax.activation.*;</div>
</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<br /></div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
class SendEmail{</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<br /></div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
public static void main(String args[]){</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
// Sending email start</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span></div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span>// Recipient's email ID needs to be mentioned.</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span> String to= "head.teamgogetters@gmail.com"; </div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<br /></div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span> // Sender's email ID needs to be mentioned</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span> String from = "<a href="mailto:jay.shahse@gmail.com" style="color: #1155cc;" target="_blank">abc@gmail.com</a>";</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<br /></div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span> // Assuming you are sending email from Gmail</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span> </div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span> Properties props = new Properties();</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span>props.put("mail.smtp.host", "<a href="http://smtp.gmail.com/" style="color: #1155cc;" target="_blank">smtp.gmail.com</a>");</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span>props.put("mail.smtp.<wbr></wbr>socketFactory.port", "465");</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span>props.put("mail.smtp.<wbr></wbr>socketFactory.class",</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span>"javax.net.ssl.<wbr></wbr>SSLSocketFactory");</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span>props.put("mail.smtp.auth", "true");</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span>props.put("mail.smtp.port", "465");</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<br /></div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span>Session session = Session.getDefaultInstance(<wbr></wbr>props,</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span>new javax.mail.Authenticator() {</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span>protected PasswordAuthentication getPasswordAuthentication() {</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span>return new PasswordAuthentication("email_address","<wbr></wbr>password");</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span>}</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span>});</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<br /></div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span></div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span></div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span> try{</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span> // Create a default MimeMessage object.</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span> Message message = new MimeMessage(session);</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<br /></div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span> // Set From: header field of the header.</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span> message.setFrom(new InternetAddress(from));</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<br /></div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span> // Set To: header field of the header.</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span> message.addRecipient(<a href="http://message.recipienttype.to/" style="color: #1155cc;" target="_blank">Message.<wbr></wbr>RecipientType.TO</a>, new InternetAddress(to));</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<br /></div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span> // Set Subject: header field</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span> message.setSubject("This is the Subject Line!");</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<br /></div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span> // Now set the actual message</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span> message.setText("This is actual message");</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<br /></div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span> // Send message</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span> Transport.send(message);</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span> System.out.println("Sent message successfully....");</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span> }catch (MessagingException mex) {</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span> mex.printStackTrace();</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<span style="white-space: pre-wrap;"> </span> }</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<br /></div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
}</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
}</div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<br /></div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
<br /></div>
<div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;">
Feel free to contact me in case of any issues and queries. </div>
</div>
Jay Shahhttp://www.blogger.com/profile/04995571037082697053noreply@blogger.com0tag:blogger.com,1999:blog-7180544993877936215.post-9416797161539482692015-04-23T03:46:00.002-07:002015-04-23T03:56:35.371-07:00Mobile Doctors and Facilities<div dir="ltr" style="text-align: left;" trbidi="on">
<b><span style="font-size: large;">MobiDoc : Solution towards Quicker and Healthy Living</span></b><br />
<div>
<b><span style="font-size: large;"><br /></span></b></div>
<div>
<ul style="text-align: left;">
<li>Having sever pain in back and neck and we don't know whom to approach. Which physiotherapist lives near by and is available ?</li>
<li>Having small health issues with a kid and don't know which Pediatrician to approach who can consult at home?</li>
<li>Help required from Dietician or Nutritionist at home would be great?</li>
<li>Anyone new to the city and don't know who would be the best doctor fit to treat you and/or your family. </li>
<li>Blood test or any other possible physical test which can be done at home. </li>
</ul>
</div>
<div>
<br /></div>
<div>
MobiDoc is a solution to all of the above problems. </div>
<div>
<br /></div>
<div>
Boon for all patients to get connected to Medical Community on Demand. </div>
<div>
<br /></div>
<div>
Boon to all Doctors to stay connected to other Doctors and patient community. </div>
<div>
<br /></div>
<div>
Whomsover thinks this is innovation and serves current problems, please cast your vote and if interested to be a member of this community, kindly enroll your name and contact details, we will contact you. </div>
<div>
</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
</div>
</div>
<iframe src="https://docs.google.com/forms/d/11G9mIfQ3gkxxTgBOtW_6H8Eie-mZDFZlMwMszJUnd7U/viewform?embedded=true" width="580" height="400" frameborder="0" marginheight="0" marginwidth="0">Loading...</iframe>Jay Shahhttp://www.blogger.com/profile/04995571037082697053noreply@blogger.com0tag:blogger.com,1999:blog-7180544993877936215.post-2303477572084163312014-11-04T09:00:00.003-08:002014-11-04T10:06:56.403-08:00Real Time Projects on Emerging Technologies for IT/CSE Students<div dir="ltr" style="text-align: left;" trbidi="on">
Every student reaches this state sooner or later where where they dive deep <b>ONLY ONCE</b> to figure out which project they must come up for their minor subjects or last year Project training.<br />
<div>
<br /></div>
<div>
As a student, we all know that this would be the first feather (The only possible game changer during the phase of interviews) on our empty crown (Resume). Well this sounds to be history for me, but trust me my readers, I have been in this phase with a lot more drama, where we found no online help nor an industry expert help.<br />
<br />
We picked on a Research Topic those days and a buzz word as well "Steganography" which is nothing but an Art Of Hiding The Fact That Information is Hidden. Sounds interesting and developing the system out of just knowing the buzzwords was even more challenging. We did it.<br />
<br />
This post is intended to be more of a quick guide on Real Time Projects on Emerging Technologies like <a href="http://innovationisrevolution.blogspot.in/2014/04/applied-cloud-computing-by-team-go.html" target="_blank">Cloud Computing</a>, Big Data, Mobile Apps and ECommerce. Big Data is its foot marks in every project wherein data quantum is humongous and data sparsity problem needs to be resolved.<br />
<b><br /></b>
<br />
<ol style="text-align: left;">
<li>VAAS (Video As A Service)</li>
<li>Mobile Social TV on Cloud</li>
<li>TST (Threshold Based Similarity Transitivity Method) on Cloud</li>
<li>WSN to Cloud to Data Mining (Traffic Tracking System)</li>
<li>Cloud Management Services (Live Example Amazon Cloud Console)</li>
<li>Image Processing ECommerce Store</li>
<li>Ecommerce for Creative Sellers and Buyers</li>
<li>Mobile App for Live Streaming of a Club Event (video streaming by stream servers like UMedia server)</li>
<li>AES Secured Hypervisor on Cloud</li>
<li>Health Care on Cloud</li>
<li>Campaign Monitor Problem - Big Data</li>
<li>Leaders Poll- Big Data/Cloud</li>
<li>Sales Recommendation System</li>
</ol>
I hope the above list would help lot of you who love challenges and bringing the strongest out of you!</div>
</div>
Jay Shahhttp://www.blogger.com/profile/04995571037082697053noreply@blogger.com1tag:blogger.com,1999:blog-7180544993877936215.post-31430529756881757352014-06-29T18:42:00.000-07:002014-06-29T18:44:29.788-07:00Frameworks vs Native App Development<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="background-color: white; border: 0px; color: #454545; font-family: 'Open Sans', sans-serif; font-size: 14px; line-height: 22px; padding: 8px 0px; vertical-align: baseline;">
Before you decide on whether you should choose to build a Phone Gap App or a native mobile App on platforms like Android, iOS , Windows Phone, etc , let us put forth the pros and cons of both and make it easier for you to weigh them on equal footing.</div>
<div style="background-color: white; border: 0px; color: #454545; font-family: 'Open Sans', sans-serif; font-size: 14px; line-height: 22px; padding: 8px 0px; text-align: center; vertical-align: baseline;">
<img alt="http://www.tricedesigns.com/wp-content/uploads/2012/03/export.png" class="aligncenter" src="http://www.tricedesigns.com/wp-content/uploads/2012/03/export.png" height="182" style="border: 0px; display: block; margin: 0px auto; padding: 0px; vertical-align: baseline;" width="452" /></div>
<pre style="background-color: white; border: 0px; font-size: 12px; line-height: 20px; padding: 0px; text-align: center; vertical-align: baseline;">Source: http://www.tricedesigns.com/</pre>
<div style="background-color: white; border: 0px; color: #454545; font-family: 'Open Sans', sans-serif; font-size: 14px; line-height: 22px; padding: 8px 0px; vertical-align: baseline;">
<b><u>Native Applications:</u></b><br />
The capabilities of any native application are directly based upon the device OS as they are developed using the APIs provided by the device OS itself. Hence, these applications can seamlessly use all possible features of the device. Also, in native applications, programmers can easily control the level of user experience without compromising on any other principal aspects of the application such as performance, battery drain, etc. It is also easy to do code enhancements for these applications.</div>
<div style="background-color: white; border: 0px; color: #454545; font-family: 'Open Sans', sans-serif; font-size: 14px; line-height: 22px; padding: 8px 0px; vertical-align: baseline;">
But, on the other hand, native applications could be programmed only with the specific application development language, such as objective-C for iOS and Java for Android, that the device OS APIs support. Hence, the native application for each OS should be developed separately by high-skilled programmers who are specialized in the respective application development languages.</div>
<div style="background-color: white; border: 0px; color: #454545; font-family: 'Open Sans', sans-serif; font-size: 14px; line-height: 22px; padding: 8px 0px; vertical-align: baseline;">
Along with investment on high-skilled programmers, programming native applications for iOS also requires an addition investment on development-infrastructure, because native applications for iOS could be developed only using Mac machines.</div>
<div style="background-color: white; border: 0px; color: #454545; font-family: 'Open Sans', sans-serif; font-size: 14px; line-height: 22px; padding: 8px 0px; vertical-align: baseline;">
<strong style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;"><u>PhoneGap Applications:</u></strong></div>
<div style="background-color: white; border: 0px; color: #454545; font-family: 'Open Sans', sans-serif; font-size: 14px; line-height: 22px; padding: 8px 0px; text-align: center; vertical-align: baseline;">
<img alt="http://www.dmxzone.com/downloads/images/phonegap.png" class="aligncenter" src="http://www.dmxzone.com/downloads/images/phonegap.png" height="172" style="border: 0px; display: block; margin: 0px auto; padding: 0px; vertical-align: baseline;" width="391" /></div>
<pre style="background-color: white; border: 0px; font-size: 12px; line-height: 20px; padding: 0px; text-align: center; vertical-align: baseline;"><em style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">Source: www.dmxzone.com</em></pre>
<pre style="background-color: white; border: 0px; padding: 0px; text-align: center; vertical-align: baseline;"><span style="color: #454545; font-family: 'Open Sans', sans-serif; font-size: 14px; line-height: 22px; text-align: left;">
</span></pre>
<pre style="background-color: white; border: 0px; padding: 0px; text-align: center; vertical-align: baseline;"><span style="color: #454545; font-family: 'Open Sans', sans-serif; font-size: 14px; line-height: 22px; text-align: left;">Phone Gap is a free and Open Source framework that enables building hybrid applications which work on most of the renowned mobile platforms such as Android, iOS, Blackberry, and Windows Phone.</span><span style="color: #454545; font-family: 'Open Sans', sans-serif; font-size: 14px; line-height: 22px; text-align: left;"> </span></pre>
<div style="background-color: white; border: 0px; color: #454545; font-family: 'Open Sans', sans-serif; font-size: 14px; line-height: 22px; padding: 8px 0px; vertical-align: baseline;">
Hybrid applications are those which partially behave like native applications and partially like web-based applications. PhoneGap framework provides a container that abridges the native APIs to the web view. Hence, web-based mobile applications that have minimal dependencies on the native device capabilities could be developed using PhoneGap framework.</div>
<div style="background-color: white; border: 0px; color: #454545; font-family: 'Open Sans', sans-serif; font-size: 14px; line-height: 22px; padding: 8px 0px; vertical-align: baseline;">
Since development using Phone Gap could be done using common web technologies such as HTML, CSS and JavaScript, and the same application could work cross-platform, the application development cost for multiple mobile OS is very less compared to the application development in the native way.</div>
<div style="background-color: white; border: 0px; color: #454545; font-family: 'Open Sans', sans-serif; font-size: 14px; line-height: 22px; padding: 8px 0px; vertical-align: baseline;">
Although PhoneGap framework seems to provide some jaw-dropping advantages on cost, time and effort, with the current generation of release, it has some serious concerns to be addressed yet.<br />
1. The container layer does not provide sufficient options for developers to measure and optimize the application performance.</div>
<div style="background-color: white; border: 0px; color: #454545; font-family: 'Open Sans', sans-serif; font-size: 14px; line-height: 22px; padding: 8px 0px; vertical-align: baseline;">
2. PhoneGap framework is not optimized to build graphic intensive user interface.</div>
<div style="background-color: white; border: 0px; color: #454545; font-family: 'Open Sans', sans-serif; font-size: 14px; line-height: 22px; padding: 8px 0px; vertical-align: baseline;">
3. Compared to iOS and Android, PhoneGap lacks strong document support for programmers.</div>
<div style="background-color: white; border: 0px; color: #454545; font-family: 'Open Sans', sans-serif; font-size: 14px; line-height: 22px; padding: 8px 0px; vertical-align: baseline;">
My suggestion is native Andorid,iOS, Window app development over any Middleware kind of PhoneGap or Titanium framework in spite of they being awesome and quick. </div>
</div>
Jay Shahhttp://www.blogger.com/profile/04995571037082697053noreply@blogger.com2tag:blogger.com,1999:blog-7180544993877936215.post-80200354590557805802014-05-12T05:26:00.003-07:002014-05-12T05:27:57.635-07:00Life Line for Innovative Projects - Team Go Getters<div dir="ltr" style="text-align: left;" trbidi="on">
<iframe allowtransparency="true" frameborder="0" height="1000" scrolling="auto" src="https://www.smore.com/0ktnz-team-go-getters?embed=1" style="border: none; min-width: 320px;" width="100%"></iframe>
</div>
Jay Shahhttp://www.blogger.com/profile/04995571037082697053noreply@blogger.com0tag:blogger.com,1999:blog-7180544993877936215.post-81578729729791012762014-05-02T01:26:00.003-07:002014-05-02T01:40:13.926-07:00Steps to Configure SSL on Tomcat and Setup Auto Redirect from HTTP to HTTPS<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="background-color: white; border: 0px; color: #333333; font-family: 'Open Sans', sans-serif; font-size: 15px; line-height: 24.296875px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><b>Secured Socket Layer (SSL)</b></span> is the cryptography protocol to provide message security over the internet. It works on the notion of Private and Public keys and messages are encrypted before sending it over the network. To configure SSL on Tomcat, we need a digital certificate that can be created using Java <em style="border: 0px; font-family: inherit; font-size: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">keytool</em> for development environment. For production environment, you should get the digital certificate from SSL certificate providers, for example, Verisign or Entrust.</div>
<div style="background-color: white; border: 0px; color: #333333; font-family: 'Open Sans', sans-serif; font-size: 15px; line-height: 24.296875px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
Follow below steps to create your own digital certificate:</div>
INDIA$ keytool -genkey -alias tomcat -keyalg RSA -keystore mycertificate.cert<br />
<br />
Enter keystore password:<br />
Re-enter new password:<br />
<br />
What is your first and last name?
[Unknown]: INDIA INDIA<br />
<br />
What is the name of your organizational unit?
[Unknown]: Dev<br />
<br />
What is the name of your organization?
[Unknown]: TGG<br />
<br />
What is the name of your City or Locality?
[Unknown]: Ahm<br />
<br />
What is the name of your State or Province?
[Unknown]: Gujarat<br />
<br />
What is the two-letter country code for this unit?
[Unknown]: IN<br />
<br />
Is CN=INDIA INDIA, OU=Dev, O=TGG, L=Ahm, ST=Gujarat, C=IN correct?
[no]: Yes<br />
<br />
Enter key password for <tomcat>
(RETURN if same as keystore password):<br />
<br />
Re-enter new password:<br />
<br />
Jay$ ls
mycertificate.cert
<br />
<br />
<div style="background-color: white; border: 0px; color: #333333; font-family: 'Open Sans', sans-serif; font-size: 15px; line-height: 24.296875px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
I have used password “changeit” for keystore and key but you can use whatever you want.</div>
<div style="background-color: white; border: 0px; color: #333333; font-family: 'Open Sans', sans-serif; font-size: 15px; line-height: 24.296875px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
Now that digital certificate is ready, our next step is to enable HTTPS communication port in tomcat and set it to use our digital certificate for providing SSL support.</div>
<div style="background-color: white; border: 0px; color: #333333; font-family: 'Open Sans', sans-serif; font-size: 15px; line-height: 24.296875px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
To enable SSL open ~Tomcat_Installation/conf/server.xml file and uncomment following line:</div>
<Connector port="8443" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
keystoreFile="/Users/INDIA/tomcat/conf/mycertificate.cert"
clientAuth="false" sslProtocol="TLS" />
<br />
<div style="background-color: white; border: 0px; color: #333333; font-family: 'Open Sans', sans-serif; font-size: 15px; line-height: 24.296875px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
To avoid any misplacement of the certificate, I have put that in the tomcat conf directory. Now restart tomcat and try to access any web application over https with port 8443.<br />
<a href="http://www.journaldev.com/160/steps-to-configure-ssl-on-tomcat-and-setup-auto-redirect-from-http-to-https/tomcat-ssl-enabled" rel="attachment wp-att-161" style="-webkit-transition: color 0.25s ease, margin 0.25s ease; border: 0px; color: #21759b; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; transition: color 0.25s ease, margin 0.25s ease; vertical-align: baseline;"><img alt="" class="aligncenter size-medium wp-image-161" src="http://1-ps.googleusercontent.com/x/www.journaldev.com/cdn1.journaldev.com/wp-content/uploads/2010/12/450x315xTomcat-SSL-Enabled-450x315.png.pagespeed.ic.M0zkjGyD3C.png" height="315" style="border: 1px solid rgb(238, 238, 238); box-shadow: rgb(238, 238, 238) 0px 0px 3px; display: block; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; height: auto; line-height: inherit; margin: 20px auto; max-width: 98.5%; padding: 5.984375px; vertical-align: baseline;" title="Tomcat-SSL-Enabled" width="450" /></a></div>
<div style="background-color: white; border: 0px; color: #333333; float: none; font-family: 'Open Sans', sans-serif; font-size: 15px; line-height: 24.296875px; margin: 10px 0px; padding: 0px; text-align: center; vertical-align: baseline;">
<ins class="adsbygoogle" data-ad-client="ca-pub-5143693538742787" data-ad-slot="3143777721" data-adsbygoogle-status="done" style="border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 0px; box-shadow: rgba(0, 0, 0, 0.2) 0px 1px 1px; display: inline-block; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; height: 90px; line-height: inherit; margin: 0px; padding: 1px 4px; text-decoration: none; vertical-align: baseline; width: 728px;"><ins style="background-color: transparent; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: none; box-shadow: rgba(0, 0, 0, 0.2) 0px 1px 1px; display: inline-table; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; height: 90px; line-height: inherit; margin: 0px; padding: 0px; position: relative; text-decoration: none; vertical-align: baseline; visibility: visible; width: 728px;"><ins id="aswift_1_anchor" style="background-color: transparent; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: none; box-shadow: rgba(0, 0, 0, 0.2) 0px 1px 1px; display: block; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; height: 90px; line-height: inherit; margin: 0px; padding: 0px; position: relative; text-decoration: none; vertical-align: baseline; visibility: visible; width: 728px;"><iframe allowtransparency="true" frameborder="0" height="90" hspace="0" id="aswift_1" marginheight="0" marginwidth="0" name="aswift_1" scrolling="no" style="border-width: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; left: 0px; line-height: inherit; margin: 0px; padding: 0px; position: absolute; top: 0px; vertical-align: baseline;" vspace="0" width="728"></iframe></ins></ins></ins></div>
<div style="background-color: white; border: 0px; color: #333333; font-family: 'Open Sans', sans-serif; font-size: 15px; line-height: 24.296875px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
So we can access any web application on both HTTP and HTTPS ports. We can set up tomcat to redirect all HTTP request to HTTPS port with some configurations.</div>
<div style="background-color: white; border: 0px; color: #333333; font-family: 'Open Sans', sans-serif; font-size: 15px; line-height: 24.296875px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
1. In ~TomcatInstallation/conf/server.xml</div>
<div style="background-color: white; border: 0px; color: #333333; font-family: 'Open Sans', sans-serif; font-size: 15px; line-height: 24.296875px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
For HTTP Connector, set the redirect port to the HTTPS connector port. It will look somewhat like this:</div>
<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
<Connector port="8090" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
<br />
<div style="background-color: white; border: 0px; color: #333333; font-family: 'Open Sans', sans-serif; font-size: 15px; line-height: 24.296875px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
2. In ~TomcatInstallation/conf/web.xml</div>
<div style="background-color: white; border: 0px; color: #333333; font-family: 'Open Sans', sans-serif; font-size: 15px; line-height: 24.296875px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
Add below configuration but make sure to add it after all the servlet mapping tags.</div>
<!-- added by Jay for automatic redirect from HTTP to HTTPS -->
<security-constraint>
<web-resource-collection>
<web-resource-name>Entire Application</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<br />
<div style="background-color: white; border: 0px; color: #333333; font-family: 'Open Sans', sans-serif; font-size: 15px; line-height: 24.296875px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
Restart the tomcat now and all the HTTP requests will automatically be redirected to HTTPS i.e http://localhost:8080/axis2 will be automatically redirected to https://localhost:8443/axis2</div>
<div style="background-color: white; border: 0px; color: #333333; font-family: 'Open Sans', sans-serif; font-size: 15px; line-height: 24.296875px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; font-weight: 600; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Note</span>: If you don’t want to provide ports in the URLs, then use 80 for HTTP and 443 for HTTPS and in this case you can skip the first step to automatic redirect HTTP requests to HTTPS because it will automatically pick the default port 443.</div>
</div>
Jay Shahhttp://www.blogger.com/profile/04995571037082697053noreply@blogger.com9tag:blogger.com,1999:blog-7180544993877936215.post-4055319933300909342014-04-10T10:37:00.003-07:002014-04-10T10:53:51.328-07:00Applied Cloud Computing by Team Go Getters<div dir="ltr" style="text-align: left;" trbidi="on">
<iframe src="http://www.slideshare.net/slideshow/embed_code/33379178" width="600" height="540" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
<br /></div>Jay Shahhttp://www.blogger.com/profile/04995571037082697053noreply@blogger.com1tag:blogger.com,1999:blog-7180544993877936215.post-2635712109412196232014-03-18T23:18:00.000-07:002014-03-18T23:21:52.842-07:00Concurrency and Atomicity in Java<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<br />
<span style="font-family: inherit;"> It is very truly said that " Necessity is mother of every invention ". This article also suffices the same need I had while extra efforts required to maintain atomicity and data consistency !</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"> Before writing this post, I didn't knew there was a simple way provide by Java itself.</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"> <span style="border: 0px; color: #333333; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Atomic operations</span><span style="background-color: white; color: #333333; line-height: 24.296875px;"> </span><span style="background-color: white; color: #333333; line-height: 24.296875px;">are performed in a single unit of task without interference from other operations. Atomic operations are necessity in multi-threaded environment to avoid data inconsistency. As we know Internet Web is one of them. </span></span><br />
<span style="font-family: inherit;"><span style="background-color: white; color: #333333; line-height: 24.296875px;"><br /></span>
</span><br />
<div style="background-color: white; border: 0px; color: #333333; line-height: 24.296875px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
<span style="font-family: inherit;">Let’s create a simple multi-threaded program where every thread increments the shared <span style="border: 0px; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">count</span> variable 4 times. So if there are two threads, after they finish <span style="border: 0px; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">count</span> value should be 8.</span></div>
<pre class="brush: java; title: JavaAtomic.java; notranslate" style="background-color: #f8f8f8; border: 1px dashed rgb(227, 227, 227); font-family: Monaco, Consolas, 'Lucida Console', 'Bitstream Vera Sans Mono', monospace; font-size: 12px; line-height: 1.62em; margin-bottom: 24px; overflow: auto; padding: 15px; vertical-align: baseline;" title="">package com.teamgogetters.sync;
public class JavaAtomic {
public static void main(String[] args) throws InterruptedException {
ProcessingThread pt = new ProcessingThread();
Thread t1 = new Thread(pt, "t1");
t1.start();
Thread t2 = new Thread(pt, "t2");
t2.start();
t1.join();
t2.join();
System.out.println("Processing count=" + pt.getCount());
}
}
class ProcessingThread implements Runnable {
private int count;
@Override
public void run() {
for (int i = 1; i < 5; i++) {
processSomething(i);
count++;
}
}
public int getCount() {
return this.count;
}
private void processSomething(int i) {
// processing some job
try {
Thread.sleep(i * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}</pre>
<br />
<div style="background-color: white; border: 0px; color: #333333; line-height: 24.296875px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
<span style="font-family: inherit;">If you will run above program, you will notice that <em style="border: 0px; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">count</em> value varies between 5,6,7,8. The reason is because <span style="border: 0px; font-style: inherit; font-variant: inherit; font-weight: 600; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">count++</span> is not an atomic operation. So by the time one threads read it’s value and increment it by one, other thread has read the older value leading to wrong result.</span></div>
<div style="background-color: white; border: 0px; color: #333333; float: none; line-height: 24.296875px; margin: 1px 0px; padding: 0px; text-align: center; vertical-align: baseline;">
</div>
<div style="background-color: white; border: 0px; color: #333333; line-height: 24.296875px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
<span style="font-family: inherit;">To solve this issue, we will have to make sure that increment operation on count is atomic, we can do that using Synchronization but Java 5 <span style="border: 0px; font-style: inherit; font-variant: inherit; font-weight: 600; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">java.util.concurrent.atomic</span> provides wrapper classes for int and long that can be used to achieve this atomically without usage of Synchronization.</span></div>
<div style="background-color: white; border: 0px; color: #333333; line-height: 24.296875px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
<span style="font-family: inherit;">Here is the updated program that will always output count value as 8 because <span style="border: 0px; font-style: inherit; font-variant: inherit; font-weight: 600; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">AtomicInteger</span><em style="border: 0px; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">incrementAndGet()</em> atomically increments the current value by one.</span></div>
<pre class="brush: java; title: ; notranslate" style="background-color: #f8f8f8; border: 1px dashed rgb(227, 227, 227); font-family: Monaco, Consolas, 'Lucida Console', 'Bitstream Vera Sans Mono', monospace; font-size: 12px; line-height: 1.62em; margin-bottom: 24px; overflow: auto; padding: 15px; vertical-align: baseline;" title="">package com.teamgogetters.concurrency;
import java.util.concurrent.atomic.AtomicInteger;
public class JavaAtomic {
public static void main(String[] args) throws InterruptedException {
ProcessingThread pt = new ProcessingThread();
Thread t1 = new Thread(pt, "t1");
t1.start();
Thread t2 = new Thread(pt, "t2");
t2.start();
t1.join();
t2.join();
System.out.println("Processing count=" + pt.getCount());
}
}
class ProcessingThread implements Runnable {
private AtomicInteger count = new AtomicInteger();
@Override
public void run() {
for (int i = 1; i < 5; i++) {
processSomething(i);
count.incrementAndGet();
}
}
public int getCount() {
return this.count.get();
}
private void processSomething(int i) {
// processing some job
try {
Thread.sleep(i * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}</pre>
<div style="background-color: white; border: 0px; color: #333333; line-height: 24.296875px; margin-bottom: 24px; padding: 0px; vertical-align: baseline;">
<span style="font-family: inherit;">Benefits of using Atomic Concurrency classes is that we don’t need to worry about synchronization at each and every place we are dealing with integers and it’s assumed to be more efficient that synchronization which involves locking resources.</span></div>
</div>
Jay Shahhttp://www.blogger.com/profile/04995571037082697053noreply@blogger.com0tag:blogger.com,1999:blog-7180544993877936215.post-8507882036114591282014-03-14T20:51:00.000-07:002014-03-15T11:33:16.659-07:00Pros and Cons of Cross Platform App Development<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="-webkit-text-size-adjust: none; background-color: white; color: #333333; font-family: Helvetica; line-height: 21px; text-align: left;">
<span style="font-size: x-large;">
Pros of Cross Platform App Development</span></h2>
<ol style="-webkit-text-size-adjust: none; background-color: white; color: #333333; font-family: Helvetica; font-size: 14px; line-height: 21px; list-style-position: outside; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 20px; padding-right: 25px; padding-top: 0px; text-align: -webkit-auto;">
<li style="color: #555555; font-size: 12px; margin-bottom: 5px; margin-right: -15px; padding-bottom: 5px; padding-top: 0px; text-align: left;"><h3>
Rapid app development with reduced cost</h3>
</li>
Cross platform mobile app development follows an inversely proportional equation between the deployment and cost shared. Faster development of a mobile app reduces its cost. Additionally, the code developed is reusable for other projects on either of the mobile platforms. It indirectly saves cost as an organization does not have to re-invest in developing a new mobile application from scratch.<br />
<li style="color: #555555; font-size: 12px; margin-bottom: 5px; margin-right: -15px; padding-bottom: 5px; padding-top: 0px; text-align: left;"><h3>
Better plugins</h3>
</li>
Cross platform Development environments such as Titanium and PhoneGap have a huge library of plugins, enabling easier access to plugins over either of the platforms.<br />
<li style="color: #555555; font-size: 12px; margin-bottom: 5px; margin-right: -15px; padding-bottom: 5px; padding-top: 0px; text-align: left;"><h3>
Reliable development framework</h3>
</li>
Web developers find it easier to use cross platform frameworks, as they are designed for simplifying scripting languages. HTML, CSS and JavaScript are the backbone of majority of internet applications, making it a natural transition over various platforms.<br />
<li style="color: #555555; font-size: 12px; margin-bottom: 5px; margin-right: -15px; padding-bottom: 5px; padding-top: 0px; text-align: left;"><h3>
Easy integration</h3>
</li>
</ol>
<div style="-webkit-text-size-adjust: none; background-color: white; color: #333333; font-family: Helvetica; font-size: 14px; line-height: 21px; text-align: -webkit-auto;">
<div style="text-align: left;">
Cross platform mobile app development enables easy integration with a cloud environment. For example, exchange integration is coded on cross platform environment and it will execute on either of the mobile platforms.</div>
<br /></div>
<h2 style="text-align: left;">
<span style="font-size: x-large;">
Cons of Cross Platform App Development</span></h2>
<ol style="-webkit-text-size-adjust: none; background-color: white; color: #333333; font-family: Helvetica; font-size: 14px; line-height: 21px; list-style-position: outside; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 20px; padding-right: 25px; padding-top: 0px; text-align: -webkit-auto;">
<li style="color: #555555; font-size: 12px; margin-bottom: 5px; margin-right: -15px; padding-bottom: 5px; padding-top: 0px; text-align: left;"><h3>
Firmware update may not include all supporting features</h3>
</li>
Google, Apple or Microsoft timely updates its framework by adding many new features. As the coding languages are different, the communication bridge that the framework creates, may not allow certain pieces of information to execute.<br />
<li style="color: #555555; font-size: 12px; margin-bottom: 5px; margin-right: -15px; padding-bottom: 5px; padding-top: 0px; text-align: left;"><h3>
Restrictive tools</h3>
</li>
In cross platform frameworks, it becomes mandatory for developers to use tools and suites which are limited to the respective app. This leads compromising user preferences, and repeating a new cycle by learning to develop the same app from scratch.<br />
<li style="color: #555555; font-size: 12px; margin-bottom: 5px; margin-right: -15px; padding-bottom: 5px; padding-top: 0px; text-align: left;"><h3>
Slower rendering</h3>
</li>
Cross compilation applications have a higher chance of being slower, and the user is unable to use the tools of preference. The code rendering time is also slow as it renders codes for each platform.<br />
<li style="color: #555555; font-size: 12px; margin-bottom: 5px; margin-right: -15px; padding-bottom: 5px; padding-top: 0px; text-align: left;"><h3>
Inefficient code</h3>
</li>
</ol>
<div style="-webkit-text-size-adjust: none; background-color: white; color: #333333; font-family: Helvetica; font-size: 14px; line-height: 21px; text-align: -webkit-auto;">
<div style="text-align: left;">
As the mobile app development is not carried out in platform’s native language, the efficiency of the final code is heavily dependent on the translation engines of the cross platform tools. It may result the final code containing a bloated code, and inefficient coding techniques which an experienced developer would avoid using.</div>
</div>
</div>
Jay Shahhttp://www.blogger.com/profile/04995571037082697053noreply@blogger.com2tag:blogger.com,1999:blog-7180544993877936215.post-86578642968974573822014-03-07T03:41:00.002-08:002014-03-12T01:25:38.191-07:00Paypal IPN(Instant Payment Notification) Integration<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div>
<a href="http://2.bp.blogspot.com/-DpH_kY3XpIE/Ux_5FgwBtrI/AAAAAAAABCs/xCLM_czugcY/s1600/paypal.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" src="http://2.bp.blogspot.com/-DpH_kY3XpIE/Ux_5FgwBtrI/AAAAAAAABCs/xCLM_czugcY/s1600/paypal.jpg" height="121" width="320" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br />
<br />
<br />
<br />
Paypal IPN Integration sounds very easy at first but has several pin points which needs to be take care of.</div>
<div>
<br /></div>
<div>
Follow 3 simple steps to make IPN flow work for you web application: </div>
<div>
<br />
<h3>
Step 1: Open a business account with Paypal </h3>
<br />
For testing you may open an account with <a href="http://sandbox.paypal.com/">http://sandbox.paypal.com</a><br />
For live server you have to open an account with <a href="http://paypal.com/">http://paypal.com</a><br />
<br /></div>
<div>
<h3 style="text-align: left;">
<b>Step 2 : Add a form button (Paypal Button) to your existing html page</b></h3>
</div>
<div>
<b><br /></b></div>
<pre class="brush: java ;html-script: true"><form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="custom" value="${userId}">
<input type="hidden" name="business" value="abc@gmail.com">
<div>
<input type="hidden" name="lc" value="CA"> <input type="hidden" name="item_name" value="Tangled Roots"></div>
<div>
<input type="hidden" name="button_subtype" value="services"></div>
<div>
<input type="hidden" name="no_note" value="0"> </div>
<div>
<input type="hidden" name="cn" value="Add special instructions to the seller"> </div>
<div>
<input type="hidden" name="no_shipping" value="2"> <br />
<input type="hidden" name="return" value="http://www.xyz.com/return.html"><br />
<input type="hidden" name="notify_url" value="http://www.xyz.com/notify.html"><br />
<input type="hidden" name="currency_code" value="USD"> <input type="hidden" name="bn" value="PP-BuyNowBF:btn_buynowCC_LG.gif:NonHosted"><br />
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"><img alt="" border="0"<br />
src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif"<br />
width="1" height="1"><br />
</form></div>
</pre>
<div>
<b> </b></div>
<div>
<br />
The "business" tag should have the email address of the business account opened in step 1. <br />
<br />
As you see in the above form <b>return</b> URL is always GET URL which you want to get back to once the transaction is successful.<br />
<br />
Another URL is <b>notify_url </b>which should always be POST URL which you want Paypal to post back once the transaction to be successful. "tnx_id" is one of post parameters which Paypal will send back.<br />
<br />
Following diagram shows how paypal treats our notify_url as IPN Listener.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-LYJvwAPcixo/UyADRbbCQvI/AAAAAAAABC8/CPuyorrH8KE/s1600/IPNBackendProcess.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-LYJvwAPcixo/UyADRbbCQvI/AAAAAAAABC8/CPuyorrH8KE/s1600/IPNBackendProcess.gif" height="169" width="320" /></a></div>
<br /></div>
<div>
<br />
<h3 style="text-align: left;">
<b>Step 3 : Write your IPN Listener</b></h3>
IPN Listener is nothing but a method accepting POST Requests.<br />
<br />
<h3 style="text-align: left;">
Mandatory Step : Mention IPN notification URL and enable it to see results</h3>
</div>
<div>
1. Login in to you business account and click on My Setting Tools under profile menu<br />
2. On right panel under "<span style="background-color: white; color: #333333; font-family: Arial, Helvetica, sans-serif; font-weight: bold;">Getting paid and managing my risk"</span><span style="background-color: white; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 11px; font-weight: bold;"> </span><span style="background-color: white; color: #333333; font-family: Arial, Helvetica, sans-serif;">click on update against</span><span style="background-color: white; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 11px; font-weight: bold;"> </span><b><span style="background-color: white; color: #333333; font-family: Arial, Helvetica, sans-serif;">"</span><span style="background-color: white; color: #333333; font-family: Arial, Helvetica, sans-serif; line-height: 16px;">Instant payment notifications".</span></b><br />
<span style="background-color: white; color: #333333; font-family: Arial, Helvetica, sans-serif; line-height: 16px;"><b> </b>3. Mention the notification URL and check Enabled radio button.</span><br />
<b style="color: #333333; font-family: Arial, Helvetica, sans-serif; line-height: 16px;"><br /></b>
<b style="color: #333333; font-family: Arial, Helvetica, sans-serif; line-height: 16px;"><br /></b>
<span style="color: #333333; font-family: Arial, Helvetica, sans-serif; line-height: 16px;">Hurray ! </span><b style="color: #333333; font-family: Arial, Helvetica, sans-serif; line-height: 16px;"> </b><span style="color: #333333; font-family: Arial, Helvetica, sans-serif; line-height: 16px;">IPN Integrated</span><b style="color: #333333; font-family: Arial, Helvetica, sans-serif; line-height: 16px;"> ! </b></div>
<div>
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<h2>
</h2>
</div>
Jay Shahhttp://www.blogger.com/profile/04995571037082697053noreply@blogger.com1tag:blogger.com,1999:blog-7180544993877936215.post-63301666294018109862014-03-07T03:41:00.001-08:002014-03-07T03:41:43.095-08:00Innovation is Revolution: Live Workshop on Android with REST made easy !<a href="http://innovationisrevolution.blogspot.com/2014/03/live-workshop-on-android-with-rest-made.html?spref=bl">Innovation is Revolution: Live Workshop on Android with REST made easy !</a>: Organized and Conducted by : Team Go Getters Description: This workshop is rated >4 out of 5 in all aspects by students of several...Jay Shahhttp://www.blogger.com/profile/04995571037082697053noreply@blogger.com1tag:blogger.com,1999:blog-7180544993877936215.post-11178464268426462052014-03-07T03:37:00.001-08:002014-03-07T03:39:25.663-08:00Live Workshop on Android with REST made easy ! <div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-uRNjiWbfQjI/UxmvBVbXzUI/AAAAAAAABCc/NO87l6vmclg/s1600/team.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" src="http://3.bp.blogspot.com/-uRNjiWbfQjI/UxmvBVbXzUI/AAAAAAAABCc/NO87l6vmclg/s1600/team.png" height="211" width="320" /></a></div>
<span style="font-family: serif, serif; font-size: large; white-space: pre-wrap;">Organized and Conducted by </span><span style="background-color: white; font-family: serif, serif; white-space: pre-wrap;">: Team Go Getters</span><br />
<span style="background-color: white; font-family: serif, serif; font-size: 12.800000190734863px; white-space: pre-wrap;"><br /></span>
<br />
<div style="font-family: serif, serif; white-space: pre-wrap;">
<span style="background-color: white;"><span style="font-size: large;">Description: </span>This workshop is rated >4 out of 5 in all aspects by students of several universities. Workshop will have a great lab/practical experience along with appropriate methodological training approach. </span></div>
<div style="font-family: serif, serif; font-size: 12.800000190734863px; white-space: pre-wrap;">
<br /></div>
<div style="font-family: serif, serif; white-space: pre-wrap;">
<span style="background-color: white;"><span style="font-size: large;">Cost:</span> Rs. 300/ attendee</span></div>
<div style="color: #694423; font-family: serif, serif; font-size: 12.800000190734863px; white-space: pre-wrap;">
<br /></div>
<span style="background-color: white;"><span style="color: #3e454c; font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; line-height: 14px; white-space: pre-wrap;">Two day LIVE WORKSHOP on Android with REST Web Service made easy for beginners </span></span><br />
<span style="background-color: white;"><span style="color: #3e454c; font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; line-height: 14px; white-space: pre-wrap;"><br /></span></span>
<span style="background-color: white;"><span style="color: #3e454c; font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; line-height: 14px; white-space: pre-wrap;"> as well intermediate students ! Must attend it ! </span><span style="color: #3e454c; font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; white-space: pre-wrap;">
</span><span style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; line-height: 14px; white-space: pre-wrap;"><span style="color: #274e13;"><br /></span></span></span><br />
<span style="background-color: white; font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; line-height: 14px; white-space: pre-wrap;"><span style="color: #0b5394;">Hiring for Free Project Training followed by workshop ! </span></span><br />
<span style="background-color: white;"><span style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; line-height: 14px; white-space: pre-wrap;"><br /></span></span>
<span style="background-color: white;"><span style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; line-height: 14px; white-space: pre-wrap;"><br /></span></span>
<span style="background-color: white;"><span style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; line-height: 14px; white-space: pre-wrap;"><br /></span></span>
<span style="background-color: white;"><span style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; line-height: 14px; white-space: pre-wrap;">Click below to RSVP:
</span><a class="_553k" href="https://docs.google.com/forms/d/1_-yQ8kSZQU8JfTPK9E5RWq-0aRd1s7g19RpY4-_0mNA/viewform" rel="nofollow" style="color: #3b5998; cursor: pointer; font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; line-height: 14px; padding: 1px 0px; text-decoration: none; white-space: pre-wrap;" target="_blank">Workshop Enrollment</a></span><br />
<span style="background-color: white;"><br /></span>
<span style="background-color: white; font-family: serif, serif; white-space: pre-wrap;">Note: "This two day workshop is very proficiently designed to achieve the goal of employability with a great learning experience. Working Professionals with huge experience will be conducting this workshop. Workshop will be in Ahmedabad and will expand to other cities shortly "</span></div>
Jay Shahhttp://www.blogger.com/profile/04995571037082697053noreply@blogger.com0tag:blogger.com,1999:blog-7180544993877936215.post-76424741553254925152013-12-24T20:29:00.001-08:002013-12-24T20:47:02.205-08:00Scrum : The Actual Agile Methodology Manifesto<div dir="ltr" style="text-align: left;" trbidi="on">
<h3 style="background-color: white; color: #e82c2b; font-family: Arial, sans-serif; font-size: 1.4em; margin: 0px; padding: 2px 0px;">
</h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-srY-7pWCymI/UrpXk7Y5MAI/AAAAAAAABBI/veKsArAfGxY/s1600/agile.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-srY-7pWCymI/UrpXk7Y5MAI/AAAAAAAABBI/veKsArAfGxY/s1600/agile.jpg" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
source: http://cdn.exploringscrum.com/wp-content/uploads/2011/08/scrum-glossary-agile-terms-300x160.png</div>
<h3 style="background-color: white; font-family: Arial, sans-serif; font-size: 1.4em; margin: 0px; padding: 2px 0px;">
What is Scrum?</h3>
<div style="background-color: white; color: #444444; font-family: Tahoma, Arial, sans-serif; font-size: 13px; line-height: 17.90625px; padding: 5px 0px;">
Scrum emphasizes more on “empirical process control” which is real world progress of project than best guess or forecast progress of the project for future releases. . In Scrum, projects are divided into crisp work shots, known as sprints, which are typically one week, two weeks, or three weeks in duration. At the finish of every sprint, stakeholders and team members meet to assess the progress of a project and plan next steps. This helps a project’s direction to be adjusted or reoriented based on completed work and its scope(necessity) , not on speculations.</div>
<div style="background-color: white; color: #444444; font-family: Tahoma, Arial, sans-serif; font-size: 13px; line-height: 17.90625px; padding: 5px 0px;">
The USP of SCRUM amongst managers and developers is ongoing assessment of completed work .SCRUM became more popular as it comes with a simple set of roles, responsibilities, and meetings that never change. If Scrum’s capacity for adaption and flexibility makes it an appealing option, the stability of its practices give teams something to lean on when development gets chaotic.</div>
<h3 style="background-color: white; font-family: Arial, sans-serif; font-size: 1.4em; margin: 0px; padding: 2px 0px;">
The Roles of Scrum</h3>
<div style="background-color: white; color: #444444; font-family: Tahoma, Arial, sans-serif; font-size: 13px; line-height: 17.90625px; padding: 5px 0px;">
Scrum has three roles: Product owner, Scrum master, and team member.</div>
<div class="wp-caption alignright" id="attachment_651" style="background-color: white; color: #444444; float: right; font-family: Tahoma, Arial, sans-serif; font-size: 13px; line-height: 17.90625px; margin: 0px; padding: 0px; width: 160px;">
<br />
<div class="wp-caption-text" style="padding: 5px 0px;">
<a href="http://scrummasterchecklist.org/pdf/ScrumMaster_Checklist_12_unbranded.pdf" style="background-attachment: inherit; background-clip: inherit; background-color: inherit; background-image: inherit; background-origin: inherit; background-size: inherit; clear: right; color: #e82c2b; float: right; margin-bottom: 1em; margin-left: 1em; margin-top: 0px; padding: 0px;" target="_blank"><br /></a></div>
</div>
<div style="background-color: white; color: #444444; font-family: Tahoma, Arial, sans-serif; font-size: 13px; line-height: 17.90625px; padding: 5px 0px;">
</div>
<ul style="background-color: white; color: #444444; font-family: Tahoma, Arial, sans-serif; font-size: 13px; line-height: 17.90625px; margin: 0px; padding: 0px;"><ul style="margin: 0px; padding: 0px;">
<li style="margin: 0px 0px 0px 27px; padding: 2px 0px;"><strong style="margin: 0px; padding: 0px;">Product Owner:</strong> He/She is responsible for communicating the vision of the product from customer's interests to the development team. Because the Product Owner has the most authority of the three roles and also also the role with the most responsibility. With growing responsibility and higher authority Product owner must strike with balanced involvement as he/she shouldn't micro manage at the same time should always be on their toes to answer any questions from the team.</li>
</ul>
</ul>
<ul style="background-color: white; color: #444444; font-family: Tahoma, Arial, sans-serif; font-size: 13px; line-height: 17.90625px; margin: 0px; padding: 0px;">
<li style="margin: 0px 0px 0px 27px; padding: 2px 0px;"><strong style="margin: 0px; padding: 0px;">ScrumMaster:</strong> The ScrumMaster acts as a facilitator for the Product Owner and the team but nowhere involved in management of team. Instead, he or she works to remove any impediments that are obstructing the team from achieving its sprint goals. In short, this role helps the team remain creative and productive, while making sure its successes are visible to the Product Owner. The ScrumMaster also works as an adviser to the Product owner about how to maximize productivity from the team.</li>
<li style="margin: 0px 0px 0px 27px; padding: 2px 0px;"><strong style="margin: 0px; padding: 0px;">Team Member: </strong><span style="margin: 0px; padding: 0px;">This team </span>is responsible for executing the work. Ideally, teams consist of seven cross-functional members, plus or minus two individuals. For software projects, a typical team includes a mix of software engineers, architects, programmers, analysts, QA experts, testers, and UI designers. Each sprint, the team is responsible for determining how it will accomplish the work to be completed. This grants teams a great deal of independence, but, similar to the Product Owner’s situation, that freedom is accompanied by a responsibility to meet the goals of the sprint.</li>
</ul>
<div>
<span style="color: #444444; font-family: Tahoma, Arial, sans-serif; font-size: x-small;"><span style="line-height: 17.90625px;"><br /></span></span></div>
<div>
<span style="color: #444444; font-family: Tahoma, Arial, sans-serif; font-size: x-small;"><span style="line-height: 17.90625px;"><br /></span></span></div>
<div>
<span style="color: #444444; font-family: Tahoma, Arial, sans-serif; font-size: x-small;"><span style="line-height: 17.90625px;">This is my experience and insight on SCRUM : An Agile Methodology ! Happy SCRUM. </span></span></div>
<div>
<span style="color: #444444; font-family: Tahoma, Arial, sans-serif; font-size: x-small;"><span style="line-height: 17.90625px;"><br /></span></span></div>
</div>
Jay Shahhttp://www.blogger.com/profile/04995571037082697053noreply@blogger.com5tag:blogger.com,1999:blog-7180544993877936215.post-10312865953956352802013-09-06T03:15:00.002-07:002013-09-06T03:19:55.777-07:00Have heard about InnoDB and MyIASM? Which one is best?<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<ol style="text-align: left;">
<li>InnoDB supports transaction while MyIASM doesn't.</li>
</ol>
2. InnoDB facilitates row-level locking while MyIASM has table-level locking<br />
<br />
3. For higher volume, InnoDB provides very high performance.<br />
<br />
<br />
Above 3 are major difference of the two major engines.<br />
<br />
<br />
There is a myth that MyIASM is faster than InnoDB which is not completely true as InnoDB stores its tables and indexes in a
table-space, which may consist of several files (or raw disk
partitions). This is different from, for example, MyIASM tables where each table is stored using separate files. So the lookup is faster in InnoDB than MyIASM.<br />
<br />
Make your best judgment considering data integrity as one of the important points!</div>
Jay Shahhttp://www.blogger.com/profile/04995571037082697053noreply@blogger.com0tag:blogger.com,1999:blog-7180544993877936215.post-22881015681597651152013-08-15T13:36:00.005-07:002013-08-15T13:36:55.715-07:00Rules for Garbage Collection Elligibility<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: Verdana;">1) All references of that object explicitly set to null e.g. object = null</span><br style="font-family: 'Trebuchet MS', Verdana, Arial, sans-serif;" /><span style="font-family: Verdana;">2) Object is created inside a block and reference goes out scope once control exit that block.</span><br style="font-family: 'Trebuchet MS', Verdana, Arial, sans-serif;" /><span style="font-family: Verdana;">3) Parent object set to null, if an object holds reference of another object and when you set container object's reference null, child or contained object automatically becomes eligible for garbage collection.</span><br style="font-family: 'Trebuchet MS', Verdana, Arial, sans-serif;" /><span style="font-family: Verdana;">4) If an object has only live references via <b>WeakHashMap</b> it will be eligible for </span><span style="font-family: 'Trebuchet MS', Verdana, Arial, sans-serif;"><br />garbage collection</span></div>
Jay Shahhttp://www.blogger.com/profile/04995571037082697053noreply@blogger.com0tag:blogger.com,1999:blog-7180544993877936215.post-12671012618801948072013-07-03T13:06:00.001-07:002013-08-26T04:30:49.886-07:00Android/Iphone Workshop<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<iframe frameborder="0" height="700" marginheight="0" marginwidth="0" src="https://docs.google.com/forms/d/16ju0b2gCGfFM12hQ98yVJ6ccuCanS46IJH-cpTJ_i04/viewform" width="575">Loading...</iframe></div>
Jay Shahhttp://www.blogger.com/profile/04995571037082697053noreply@blogger.com0tag:blogger.com,1999:blog-7180544993877936215.post-41208490151262648862012-12-01T22:53:00.003-08:002012-12-01T22:55:25.238-08:00Java/Android Course in 3 weeks ! Amazing opportunity ! <div dir="ltr" style="text-align: left;" trbidi="on">
<div id="mailContent" style="line-height: 1.22em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">
<div class="undoreset clearfix" id="message2099831988" role="main" style="clear: none; color: black; display: block; height: auto; line-height: 1.22em; margin-bottom: 1em; margin-left: 0pt; margin-right: 0pt; margin-top: 1em; outline-color: initial; outline-style: none; outline-width: initial; overflow-x: visible; overflow-y: visible; padding-bottom: 0.8em; padding-left: 0pt; padding-right: 0pt; padding-top: 0.8em; position: relative; visibility: visible; zoom: 1;">
<div id="yiv1302503562" style="line-height: 1.2em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">
<span class="Apple-style-span" style="font-size: x-small;">Good News Friends ! A 3-week java-android crash course at Zeno. Target students are fresh grads, engineers who want to get back to workforce after a break and people who want to move to Java or Android from other engineering disciplines. </span><br />
<br style="line-height: 1.2em; outline-color: initial; outline-style: none; outline-width: initial;" />
<b><span class="Apple-style-span" style="font-size: x-small;">The course costs $2k and </span>Zeno essentially makes it free of cost</b><span class="Apple-style-span" style="font-size: x-small;">. Zeno is a mid-sized company that has successfully placed engineers in several well-known bay area companies. The details of the course are mentioned below. If you know anyone interested, please forward. </span><br />
<br style="line-height: 1.2em; outline-color: initial; outline-style: none; outline-width: initial;" />
<h2 style="text-align: left;">
<span class="Apple-style-span" style="font-size: x-small;"><b>Point of Contact</b>: <span class="Apple-style-span" style="font-weight: normal;">Kaus (408) 505 4966 </span></span><span class="Apple-style-span" style="color: #343434; font-family: verdana; font-size: 10px; font-weight: normal; line-height: normal;"><a href="mailto:kvnamjoshi@gmail.com">kvnamjoshi@gmail.com</a></span></h2>
<div>
<span class="Apple-style-span" style="font-size: x-small;"><span class="Apple-style-span" style="font-weight: normal;"> </span></span></div>
</div>
<div id="yiv1302503562" style="line-height: 1.2em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">
<span class="Apple-style-span" style="font-family: arial, helvetica, clean, sans-serif; font-size: 14px; line-height: 15px;"><b style="line-height: 1.2em; outline-color: initial; outline-style: none; outline-width: initial;">Timings:</b> 9:30 AM to 5:30 PM Monday to Friday from Dec 4, 2012 to Dec 21, 2012 in Fremont, CA</span></div>
<div id="yiv1302503562" style="line-height: 1.2em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">
<span class="Apple-style-span" style="font-family: arial, helvetica, clean, sans-serif; font-size: 14px; line-height: 15px;"><b style="line-height: 1.2em; outline-color: initial; outline-style: none; outline-width: initial;"><br /></b></span></div>
<div id="yiv1302503562" style="line-height: 1.2em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">
<span class="Apple-style-span" style="font-family: arial, helvetica, clean, sans-serif; font-size: 14px; line-height: 15px;"><b style="line-height: 1.2em; outline-color: initial; outline-style: none; outline-width: initial;">Background:</b> The objective of this fast-paced Java/Android course is to help students develop into good quality software engineers in 3 weeks. The course will focus on efficient hands-on learning as opposed to theory. In addition to Java and Android, we'll train students on how to learn new technologies, work efficiently in teams, do well in interviews and jobs. As part of the course, students will build various products with latest tools and technologies like personal mobile cloud CRM , social interaction analytics etc. Both Eswar and I have significant experience interviewing, hiring, managing large teams of engineers and building products used by millions of daily visitors. </span></div>
</div>
</div>
<div id="mailContent" style="color: #333333; font-family: arial, helvetica, clean, sans-serif; font-size: 13px; line-height: 1.22em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">
<div class="undoreset clearfix" id="message2099831988" role="main" style="clear: none; color: black; display: block; height: auto; line-height: 1.22em; margin-bottom: 1em; margin-left: 0pt; margin-right: 0pt; margin-top: 1em; outline-color: initial; outline-style: none; outline-width: initial; overflow-x: visible; overflow-y: visible; padding-bottom: 0.8em; padding-left: 0pt; padding-right: 0pt; padding-top: 0.8em; position: relative; visibility: visible; zoom: 1;">
<div id="yiv1302503562" style="line-height: 1.2em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">
<br style="line-height: 1.2em; outline-color: initial; outline-style: none; outline-width: initial;" />
<b style="line-height: 1.2em; outline-color: initial; outline-style: none; outline-width: initial;">Pre-requisites:</b> Bachelor’s degree and basic programming experience in at least one language either in school/university or industry.<br />
<br style="line-height: 1.2em; outline-color: initial; outline-style: none; outline-width: initial;" />
<b style="line-height: 1.2em; outline-color: initial; outline-style: none; outline-width: initial;">Course content:</b><br />
<u style="line-height: 1.2em; outline-color: initial; outline-style: none; outline-width: initial;">Efficient learning skills:</u> How to take notes, be a quick learner, read high tech books and complex code<br />
<u style="line-height: 1.2em; outline-color: initial; outline-style: none; outline-width: initial;">Java and web programming:</u> Core Java, JSP, JDBC, Struts, Spring, Hibernate, Multi-threading, EJB, Eclipse, HTML5, CSS3, JavaScript, Ajax, jQuery, SQL, NoSQL, Big Data, web services, cloud computing and more<br />
<u style="line-height: 1.2em; outline-color: initial; outline-style: none; outline-width: initial;">Android and mobile programming:</u> Smartphone programming, Tablet programming, Native apps, Mobile web, app monetization, Camera API, location, Mobile games, Android versus iOS and more<br />
<u style="line-height: 1.2em; outline-color: initial; outline-style: none; outline-width: initial;">Tools and Processes:</u> git, JIRA, Yammer, agile, waterfall, software plc, business analysis etc.<br />
<u style="line-height: 1.2em; outline-color: initial; outline-style: none; outline-width: initial;">People skills:</u> Understanding and influencing people, Interview skills, self-confidence and teamwork<br />
<br /></div>
</div>
</div>
</div>
Jay Shahhttp://www.blogger.com/profile/04995571037082697053noreply@blogger.comtag:blogger.com,1999:blog-7180544993877936215.post-26936174260728663712011-10-05T13:54:00.000-07:002011-10-05T13:54:53.302-07:00Asynchronously Job Execution on CloudJob Scheduling:<br />
<br />
As old as computer themselves<br />
- Batch processing of punch cards<br />
<br />
Batch Processing<br />
- Maintenance tasks<br />
<br />
Process optimizations<br />
- shared resources across users<br />
- postpone to times when less busy<br />
- generally increases apps tsp<br />
<br />
Event Driven process automation<br />
<br />
Offloads part of process<br />
- to another thread<br />
- for execution ata lter point<br />
<br />
Provides<br />
- persis<br />
-failure handling<br />
-listener and plug-ins infra<br />
<br />
In java space<br />
-embedded<br />
-standalone(RMI, WS)<br />
<br />
<br />
<br />
<br />
<br />
Distributed environments<br />
<br />
- Cluster<br />
- high availability<br />
<br />
-failure capabilities<br />
<br />
- Load balancing<br />
-round robin , sticky session<br />
<br />
<br />
cloud<br />
-same as above<br />
- but elasticity<br />
-dynamic cluster redefinition<br />
<br />
But Certainly increase IT INFra<br />
<br />
<br />
Clustered Jon Scheduling and Execution<br />
<br />
HA<br />
- Node failure handled by scheduler<br />
-Never loose job or their execution path<br />
- Jobs can be executed on any node<br />
-Preferably the one scheduled on?<br />
<br />
Load Balancing<br />
- Round Robin ?<br />
- First Node that can "acquire" the job , executes it<br />
- Sticky Session?<br />
- Preferably the one schooled on??<br />
- On the node with the job's session???<br />
<br />
Elastic?<br />
- Node come and go<br />
<br />
<b>Node gone ! = failure</b><br />
<br />
What about a new node???<br />
<br />
What does this mean to scheduling?<br />
- There is more than asynchronous execution<br />
- We do make assumptions<br />
<br />
<br />
<br />
High Availability<br />
<br />
-Persistent and redundant storage no SPoF (Single point of failure)<br />
<br />
- Redirect "Best suited"<br />
<br />
- Not only the time of failure<br />
<br />
- Pick up the least busiest node<br />
<br />
Obviously does nothing: load???<br />
Available threads<br />
Available memory<br />
Amount of cores<br />
Operating System<br />
<br />
<br />
<br />
Quartz Enterprise Scheduler<br />
<br />
- Open Source job scheduling service<br />
- Runs embedded inside virtually any Java Application<br />
<br />
- JAVA EE or<br />
- JAVA SE Application<br />
<br />
- Use to create very simple or complex schedules<br />
- Handles tens,hundreds 1000s of jobs<br />
<br />
Two main concepts<br />
-Jobs<br />
-Any Java class that implements the simple Job iNterface<br />
<br />
- Triggers<br />
-at certain time day/days or week<br />
-repeated number of time until specific day/week or indefinitely or time interval delay<br />
<br />
Clustering through<br />
- The database<br />
- Support for major database vendors out of box<br />
- Terracotta clustering<br />
- Simply requires configuration changes<br />
<br />
What's Quartz Where??<br />
- Terracotta clustered Scheduler feature<br />
<br />
-Adds locality capabilities to jobs and triggers<br />
-Defines Node Groups(one or multiple nodes)<br />
- Jobs and/or TriggerGroups execute on particular NodeGroups<br />
- Contraints<br />
-memory,amount of cores,avg loadJay Shahhttp://www.blogger.com/profile/04995571037082697053noreply@blogger.com0tag:blogger.com,1999:blog-7180544993877936215.post-71370398394214729252011-10-05T09:30:00.000-07:002011-10-05T09:50:34.299-07:00JVM Performance TuningIt is just a methodological philosophy ! <br />
<br />
Simple 3 steps:<br />
<br />
1) Watch<br />
2) Observe<br />
3) Change<br />
<br />
Naaaaah ! Cant be so simple right?? True...<br />
<br />
Thing to remember: Apart from other smart stuff JVM does like memory allocation, memory deallocation and much more, it is just an Instruction Set Generator and Interpreter based on your input code. So neater and smarter code(thoughtful usage of collections) improves JVM's performance!<br />
<br />
Lets get into technical jargons:<br />
<br />
1) Frame the problem<br />
<br />
WHY DO YOU CARE????<br />
<br />
2) Just try it<br />
<br />
TWEAK GC OR JIT OPTIONS FOUND ON WEB<br />
<br />
USE OPTIONS WITH DIFFERENT APPS TO UNDERSTAND THAN <b>NOT ONLY JVM OPTIONS TUNE JVM PERFORMANCE BUT ALSO YOUR CODE</b><br />
<br />
<br />
3) KISS principle<br />
<br />
Those those who are not aware of KISS (Keep It Simple Stupid)<br />
Incremental changes on the path to success<br />
<br />
<br />
What you guys think CPU or Memory is the bottle neck for JVM???????<br />
<br />
Out of Brain Cells (If you would have used to think about it!)???????<br />
<br />
Don't worry simple answer to it is both ! <br />
<br />
<b>CPU</b>- Number of cores, CPI(Cycles Per Instructions), threading<br />
<br />
<b>I/O</b>- Network Shared Capacity, Spinning plated in the loop...<br />
<br />
You have to really think about latency vs throughput<br />
<br />
Tips and Tactics:<br />
<br />
1) Try to use performance measuring PROFILERS and JVM ANALYZERS ! <br />
<br />
2) Use java.util.concurrent but remember there is overhead of synchronization memory allocation <br />
<br />
3) Do you really need synchronization. Vector vs ArrayList<br />
<br />
4) Try to play around with GC (Garbage Collector). Most important calling System.gc() doesn't force GC to clean up. It just raises an I/O interrupt.<br />
<br />
5) Think about data structure complexity. I would use HashMap/HashTable if I had to just search to achieve O(1) complexity.. Thats really affects JVM performance..Jay Shahhttp://www.blogger.com/profile/04995571037082697053noreply@blogger.com0tag:blogger.com,1999:blog-7180544993877936215.post-17797660685063044572011-10-04T15:30:00.000-07:002011-10-04T15:30:58.160-07:00Project Coin: Oracle Forwarding JavaI am trying to be very brief with my posts and tweets! Le t me know if you have in-depth questions fuzing your brain cells ! <br />
<br />
1)Improved numeric literals<br />
<br />
2)Strings in switch<br />
<br />
3) Reduced varargs warnings<br />
<br />
4) Diamond operator<br />
<br />
5) Multi-catch with more precise rethrow<br />
<br />
6) try-with-resources statementJay Shahhttp://www.blogger.com/profile/04995571037082697053noreply@blogger.com0