A Recognition for Cogent IBS

In the July edition of Silicon India (a leading technology magazine), Cogent IBS received a special mention. Cogent was featured in the list of 20 most promising Enterprise Mobility Solution Providers in the country. It is a small honor, but the Cogent team feels really proud to be featured in this list amidst other well deserving companies.

It is always an honor to be recognized this way and it hasn’t come to us easily. The story of the Cogent Mobility team is just beginning to get written and such a recognition within 2.5 years since the birth of this team is not a bad achievement and we consider this accolade as a gentle pat on our back & a push to move forward to achieve much more.

Here is the link to the article, which features an interview with Ganpy.

Advertisements

Takeaways from WWDC 2014

By Phillip Garton

Apple’s World Wide Developer Conference (WWDC) took place this year on June 2nd. Although Apple didn’t unveil any new hardware like everyone had hoped, from a mobile application developer perspective, it was still an impressive conference bringing new software and features in Apple’s next generation of software.

Apple unveiled iOS 8, which in terms of UI is not a major leap forward but rather an enhancement of iOS 7.  Where iOS 8 shines is the new features and new content, as well as long awaited enhancements that have gone missing from iOS 7. We will be looking in detail, the new things that iOS 8 brings and what their impact will be to the mobile market place.

Notifications

Something on the surface that seem simple—but for iOS users is a huge change—is interactive messaging and notifications from the notification center in iOS. This is a feature that has long been a part of Android and has further been long desired by iOS users: the ability to interact with messages and notifications without having to open the actual message! iOS users will now be able to respond to text messages and third party application notifications directly from the notification center or the lock screen, making responses to simple tasks even faster then before. Along with quicker access to messaging and notifications we get quicker access to our recent contacts. By double tapping the home button, along with the apps that are open on your device, in iOS 8 you will now see a list of recent contacts at the top of the screen. Through this you will be able to call, message, or email your most recent contacts, making it even faster to reach to those with whom you are most connected.

Extending notifications further Apple has introduced travel time notifications. Improving productivity and timeliness, Apple calendar will now notify you of the time needed to get to an appointment on time, eliminating the excuse of a ‘got caught in traffic’.

Email

 iOS 8 enhancements are themed around productivity and making repetitive tasks faster and more efficient. Email, being one of the most used smartphone applications, was not ignored. Email can now be swiped right to be marked unread/read, and swiped left to allow for flagging or deletion giving quick access to common mail functions. Swiping down on an email being composed allows for access to other email content which is very beneficial for professionals as the need to reference or copy information into a composed email is a common activity and helps elevate iOS email to the next level. One of the most interesting and useful updates to email is that it now recognizes an event in the email body and allows the user to add it to their calendar without having to create an entry manually or receive a traditional invite. This is best explained by illustration: someone sends you an email asking if you would be free for dinner tomorrow at 6pm; from within the email iOS allows you to add this new event to your calendar by clicking on it. This is not only limited to events. Contacts can be added to your iOS contacts by simply clicking on the number.

Spotlight

Search iPhone/Search iPad just got a whole lot more powerful. Again focusing on efficiency, Apple introduced Spotlight Search. Searching by either pulling down on the home screen or searching within Safari now utilizes the Spotlight search. When searching, Spotlight not only searches the web, but searches apps on your device or in iTunes, news, etc. for relevant feedback on the query. This is not a new concept. But as always, Apple takes this one step further and Spotlight presents top recommendations based on your search, giving you faster connection to the content that you are searching for.

 QuickType

Like it or hate it, we have all become accustomed to autocorrect on iOS devices. We have all seen the sometimes laughable auto corrections that have been posted all over the internet. Apple has taken autocorrect one step further in a positive direction, adding intelligence and content completion. QuickType—as Apple calls it, makes suggestions based on commonly used words to complete the sentences that you are currently typing. But in true Apple style they take it to the next level! QuickType also manages how you talk to individuals and makes suggestions based on the context of the message and the person. An example of this would be if you are messaging a professional contact you might type “Exceptional Job!” but if you are messaging a friend you might type “Awesome Job!”. QuickType learns this and suggests words based on this predictions. Again, Apple is going after efficiency and ease of use.

Continuity

Continuity isn’t limited just to iOS but has been expanded to Mac OS as well. Continuity brings cross device interaction and connectivity to a level that most manufactures could only dream of. With continuity, messages, notifications, phone calls, and alerts are available on all devices within the same area. Even if your iPhone is in another room, you can receive, and place phones calls from your Mac computer, or receive and reply to messages. Not only does continuity bring your devices together, but also it brings a host of additional features. Group messaging is now improved allowing for threads to me named for better understanding. Attachments within the thread can be viewed within the details of the thread, eliminating the need to scroll through the entire thread to view an attachment. If you have ever been annoyed by an ongoing thread that has diverted from information that you care about, you can now elect to either set the thread to “do not disturb” or leave the thread all together. Further increasing messaging efficiency and ease of use, Apple has added the feature to quickly add images and content inline to the messages being composed. And if you just don’t feel like typing a response you can now simply add an inline voice or video message to truly convey something to the other party. Here is to hoping, no one will ever misunderstand your text message as it was intended!

Enterprise

Apple has not lost sight of the customer base that has had a major impact on its market share which is the enterprise market. Ninety Eight percent of Fortune 500 companies use iOS devices, and Apple is looking to further that by making easier for companies to roll out devices within their enterprise. Apple is introducing a Device Enrollment Program which will automatically configure your device for your business when a new device is activated. The enrollment program makes it even easier for device configurations, applications, and restrictions to be loaded on the device—making a huge impact on the cost and maintenance of devices on your corporate network, removing the burden for your IT staff, and making simpler for your employees to connect their iOS devices then ever before.

Apple also knows how important security is to the enterprise market. iOS 8 supports S/MIME controls per message, giving users the ability to choose to sign and encrypt individual messages for greater control over the security of mail messages. Message threads can now be set to VIP status to give higher priority to import messages. MDM enhancements give greater control over devices on your corporate network. Third party document support allows access to the documents which are accessible on device and the ability to manage both books and PDFs. Apple hasn’t ignored one of the biggest threats to enterprise security connecting to unknown networks. iOS 8 supports peer to peer AirPlay, eliminating the need to connect to a network to display content on other Apple devices.

iCloud Drive

Apple is looking to change how we think of the cloud and increase how we use the cloud. Currently with iCloud, most users use it for backing up important information and content on their device. With iCloud Drive, Apple looks to change this into a true storage alternative for your Apple devices. Apple does this by reducing the cost for storage 20GB for $0.99 and 200GB for $3.99 and increasing the sharing and ease of sharing content across devices. Spotlight now searches not only your device, the web, and apps, but also the cloud. Apple then takes it one step further by introducing Family Sharing so up to six users can share information across devices, share reminders, purchases, find friends, and find iPhone. Apple looks to connect users and the cloud more than before.

Thoughts and Reactions to iOS 8

Apple has continued to build on a strong OS that it started with iOS 7. iOS 8 brings more content and features, and I am sure even more will come to light as this is just a subset of what is to come from iOS 8. Apple has released both iOS 8 and Xcode 6 to developers so we are sure to see more in the coming months before its release in the fall.

The Cogent IBS Mobility Team is still reviewing all that Apple presented.

Please see some of the initial reactions from the rest of the team regarding Apple’s announcements.

Thorsten Gorny – Senior Manager & Business Development, Mobility

 – Health / HealthKit seems to be a great platform to unify and connect data from different devices, lets me hope for the iWatch…:)

 – HomeKit see above + curious to see what Apples strategy is in terms of hardware… Maybe this is going to be Apple’s second big product category after the iWatch…

 – Swift / Developers are sure to be excited!

 – TouchID open to other apps / cool, this could be something for us:)

 – Better / easier exchange of data between apps / could this solve our caller ID recognition issue in mD?

 Overall, even being still a little disappointed about the missing iWatch, I guess with HomeKit and HealthKit Apple laid the foundation for two new product categories which might take Apple to the next level – at least now I am 100% sure there will be the iWatch coming out soon…:) “

 Peng Xie – iOS Developer, Mobility

  • App extensions enables users to share contents across apps or perform one app’s action in another app. Developers can also use extensions to extend their app’s ability to Notification Center.
  • Custom keyboards are also considered as app extensions. I believe developers will come up with creative keyboards aimed to specific tasks such as entering email addresses or special strings that only requires a subset of the full keyboard. (Example: employee IDs)
  • The new games related kits in iOS7 should have a broader application than just for game developments. Especially with the improved Sprite Kit and newly introduced Scene Kit, developers will be able to create some pretty interesting new controls to greatly improve user experience of apps.
  • The introduction of Cloud Kit and Document Picker will make the communication between apps and iCloud easier for developers and provide more possibilities for sharing and editing documents across apps through iCloud
  • Unified Storyboards for Universal Apps
  • Developers can now use one Storyboard for both iPhone and iPad interface. The size classes will be used for app to adopt different screen sizes base on deploy target.
  • This change is important for developers since it’s rumored that Apple will introduce next generation devices with larger screens. In addition, it’s highly possible that Apple will continue using iOS and offer SDK for future Apple TV models. The unified  Storyboards will make it easier for developers to add support for Apple TVs.
  • App Store Improvements
  • Burstly, the owner of the famous testing platform TestFlight, is acquired by Apple earlier this year and Apple has included the TestFlight as a new feature to App Store. This improvement will greatly help the developers to beta test their apps.
  • A completely redesigned iTunes Connect will also come later this year. The new analytics feature will surely provide a better experience for developers and make it easier to maintain the apps in App Store. 

 Sean Kollipara – Android Developer, Mobility

  1. A good move to introduce long-overdue features.  These are long-overdue because most have been available in iOS’ biggest competition, Android, for quite some time.

            A. Extensions framework

▸    Similar to the “intent” system on Android where pieces of data can be sent between apps by attaching them to the intent

▸     Available on Android since 1.0 (September 2008)

 B. Third-party keyboards

▸       Available on Android since 1.5 (May 2009)

C. Third-party widgets

▸       Available on Android since 1.5 (May 2009)

D. Typing suggestions

▸       Available on Android since 1.5 (May 2009)

▸       iOS takes it a step further by analyzing the content of incoming messages to provide contextually relevant suggestions when authoring a response

E. Battery usage stats

▸       Available on Android since 1.6 (September 2009)

F. Videos in the AppStore

▸       Available in the Google Play Store (then known as “Android Market”) since December 2010

G. Interactive notifications

▸       Available on Android since 4.1 (July 2012)

▸       iOS takes it a step further by allowing a text field in the notification, which enables quick text-based input for responding to a message (or performing any other task that requires text input from the user)

H. Searching

▸       One search queries against multiple sources and produces a compiled list of results: apps on device, contacts, Google search, Bing search, etc.  I feel that this is merely a natural progression of technology and should be expected of all modern search tools.

▸       Spotlight similar to Google Now, which has been available on Android since 4.1 (July 2012)

▸       Music search (serviced by Shazam on iOS 8) has been available on Google Now since February 2013

▸       Use a hotword (“Hey Siri”) to activate voice assistant; available on Android (“OK Google”) since 4.4 (October 2013)

I. iCloud Drive

▸       Service is pretty much identical to Google Drive

▸       Nice that it’s available for a non-Apple platform such as Windows

▸       Disappointing that it is not available for Android or Linux.  Maybe there will be an Android version in the future, but that is doubtful because Apple has never released any apps that allow its services to be used on Android.

  1. Continuity (Airdrop, Handoff, and call integration) is really cool and convenient, and it will be difficult for the competition to imitate.  No one else has a full-blown device ecosystem in the way that Apple does with Mac, iPhone, iPad, OS X, and iOS.  Because the competition is so fragmented (multiple hardware and software vendors in desktop, laptop, mobile, etc.), there would first need to be a standardized protocol over which all of these devices can interact.  Even then, there would still be varying user experiences between vendors.  Currently there are third-party solutions (AirDroid, Pushbullet, Mighty Text, et al.), but the lack of native support in the operating system is a big UX papercut.
  2. Family sharing creates a simple framework by which parents can approve their child’s iTunes/AppStore purchases.  This will probably save headaches for lots of parents.
  3. Disappointed that TouchID is expanding, as I think fingerprints provide a false sense of security.  This is especially true when they are relied upon to unlock the device’s entire keychain. They are easy to steal: they’re probably all over the phone, and they can be lifted cheaply and easily using Scotch tape.  If compromised, fingerprints cannot be changed.  Within 3 days of TouchID’s public availability was originally released, many hackers had already found ways to circumvent its protections.  This demonstrates the inherent lack of security in using fingerprints as a sole means of identification.  I would like to see Apple, Samsung, and all other mobile device manufacturers discontinue the use of fingerprint-based identification, especially where security is mission-critical (ex: protecting bank account information).  Fingerprints are better suited as a replacement for usernames, not passwords.
  4. Location-based app suggestions on the lockscreen are really cool, especially when visiting new places.  I really liked the demo of showing a transit system’s app when in/near a subway station.
  5. Health and HealthKit are an awesome step forward in the realm of the health and fitness apps.  The idea of a properly-secured central repository for storing health data makes lots of sense, and it allows for a more complete picture of a person’s health situation because it combines data from all sources rather than it being fragmented in each app.  This also allows for the sharing of data with a user’s physician, which enables better, more personalized, and timely health care decisions.  I think this has the potential to revolutionize the way health care is handled.

Stay connected to Cogent IBS blog to see more information, as it becomes available and our reactions and thoughts how iOS 8 will impact you.

Highlights of HR2014 – Nice, France

By Ganpy

Let’s get the obligatory joke out of the way first. Shall we?

“Was the Nice conference nice?”

“Yes. It was..”

Michael (Ingentis) and Ganpy

Michael (Ingentis) and Ganpy

Exhibition Hall

Thorsten giving a Demo

Now that we have the joke out of the way, I will quickly summarize our experiences from the conference.

The +

  • Venue – Couldn’t have picked a better venue in Europe for that particular week. With so much going around Nice in that week and with all the great weather, it seemed just right to have a conference in Nice.

The  –

  • Venue – Yes, This was in France. But there clearly were no French customers at the conference. Or, if they were there, we didn’t spot them. In the hours of idle time we had at the booth on Day 2 and Day 3, we exchanged notes with our booth neighbors who are a French company and they confirmed the same. And the reason? Apparently, the speculated reason was that the Insider conferences are priced very high for an average French customer.

The +

  • Our Booth Location – Yes, it was perfect on Day 1. We had good traffic on Day 1 and we were placed right on course through the main entrance to the Exhibition hall and a beverage/refreshment table was placed right in front of our booth.

The –

  • Our Booth Location – The exact same location. But on Day 2 and Day 3 that was a bane to us (perhaps because they moved the refreshment table somewhere else). We had a low turnout on Day 2 and a lower turnout on Day 3.

The +

  • 5 conferences at the same time – HR, BI, FI, GRC and HANA – all attendees came together for those 3 days in Nice. This made us meet all kinds of customers and we did learn a thing or two about the daily operations challenges in SAP in areas outside of SAP.

The –

  • 5 conferences at the same time – HR, BI, FI, GRC and HANA – all the attendees came together for those 3 days in Nice. This meant we couldn’t really tell who was HR, as our primary focus was HR customers and hence sometimes, what appeared like a decent conversation at the booth eventually would end in a meaningless conclusion.

The ,

  • The European versions of these conferences are still maturing. May take another 3-4 years before they get into a rhythm, if they do that it.
  • They have to keep changing the venue but perhaps, should settle down to one or two options eventually, as from what we have seen, the venue doesn’t necessarily seem to encourage more local customers to show up for the conference.
  • Our partnership with Ingentis keeps getting stronger at a personal level when we get to spend more time at these conferences, because we get an opportunity to understand each others’ businesses in detail, through personal insights.

The ?

  • Many questions to ponder before we plan our next year’s SAP Insider conferences. Cogent IBS, needs to consolidate a product portfolio, with a clear message for these Insider conferences (especially the European versions), so that our pre-conference and post-conference marketing campaigns could be a little more impactful. Our message for 2014 was “HR Anywhere” and that seemed to resonate well in the US conference, but probably not that much in Europe.
  • More analysis on how to generate a better traction at the booth needs to be done (again for the European version). We did well overall, in terms of quality of leads but we are not yet sure, if we missed any opportunity to meet more customers than we did.

The .

  • In summary, this was really a great conference and we will continue to take part in this, either till we see we are not generating any quality leads or till we see the conferences stop growing at some point. For now, both of the above are not true.
  • Our Thanks to Ingentis for being part of this conference and for sharing the booth space.

 

Coding with Blocks in Objective-C (Part 2)

By Peng Xie

Part I of this series can be found here.

In Part One of this blog, we talked about the general idea of blocks and how to use them. We also discussed the concept of concurrency and two APIs in Objective-C for concurrency: Dispatch queues and operation queues. In this second part of the blog, we will dive deeper into concurrently executing blocks using NSBlockOperation objects. And finally, as promised in the first part, we will look at an example of a typical “gotcha” and show you how to avoid it when using blocks. Please still keep in mind that this blog is designed for readers with intermediate knowledges of Objective-C and we’re using Automatic Reference Counting when coding.

NSOperationQueue, NSOperation and NSBlockOperation

NSOperationQueue

As the name described, operation queues are queues of operations, specifically in Objective-C, they are NSOperationQueue and NSOperation objects. Have you noticed that both the queues and the operations are objects. That means we can use them just as any other Objective-C objects. NSOperationQueue* operationQueue = [[NSOperationQueue alloc] init]; [operationQueue addOperationWithBlock:^{NSLog(@”A block in an operation queue”);}];

The two lines of codes above show how to initialize a NSOperationQueue object and add an operation to the queue using a block. You can also add NSOperation objects to the queue but we will talk about it later after we discuss more on NSOperation class. NSOperationQueue roughly follows a first-in-first-out policy when managing the operations and will make its own decision of when to start an operation.

NSOperation

Now it’s time for some NSOperations. NSOperation is an abstract class which means it requires subclassing in order to use it. Don’t worry. It’s not complicated. Below is the content of our SampleOperation’s header file. #import <Foundation/Foundation.h> @interface SampleOperation : NSOperation

@end 
And the implementation.
#import "SampleOperation.h"
@implementation SampleOperation
– (void)main { @autoreleasepool { NSLog(@”I’m an operation”); }
}@end See? It can be as simple as overriding the “main” method in the concrete class you created, creating an “auto release pool” and putting your codes into it. Since the operation won’t be able to access the main thread’s auto release pool, you have to create your own for the operation. And yes, the syntax shown above is written under ARC environment.
There’re also two other important methods in NSOperation class. The “Start” and “Cancel” methods. You don’t usually override the “start” method and when you call the method of a method, the operation will begin to execute. When an operation is added to a queue, the queue will decide when to call the “start” method of the operation. The “cancel” method is used to cancel the operation. When you write your main method, you should frequently check if the operation is cancelled by checking “self.isCancelled”. Whenever the statement is true, you should stop the execution right away.

NSOperation + Blocks == NSBlockOperation

It seems like we haven’t talked about blocks for a long time. I know you miss them. And now, let’s combine our knowledge of NSOperation and blocks by looking at a concrete class of NSOperation provided in Objective-C, the NSBlockOperation class. A NSBlockOperation object can contain several blocks and concurrently execute the blocks just like an operation queue.

NSBlockOperation* blockOperation = [NSBlockOperation
blockOperationWithBlock:^{NSLog(@"A block in a NSBlockOperation
object");}]; // 1
[blockOperation addExecutionBlock:^{NSLog(@"Adding another
block");}]; // 2

NSArray* blocksInOperation = [blockOperation executionBlocks]; // 3  The first line is the code to create a NSBlockOperation object. Line 2 uses the “addExecutionBlock” method to add another block to the operation. And the last line shows how we can get all blocks inside a NSBlockOperation object by calling the “executionBlocks” method. Please notice that the blocks added to a NSBlockOperation object should take noparameter and return no value. And since the NSBlockOperation is just a concrete subclass of NSOperation, we can still use the “start” method to kick off the execution.

Bonus: Canceling a NSBlockOperation

Congratulations! You’ve earned yourself a bonus chapter. In this part of the blog, we will combine our knowledge of blocks, NSOperation and NSBlockOperation by looking at an example of canceling a NSBlockOperation. As we discussed earlier, when overriding the “main” method of a NSOperation subclass, we should check if the operation is canceled as frequently as possible. That guideline also holds true for NSBlockOperations. That sounds pretty easy. You may think it should be just like the following codes.

NSBlockOperation* blockOperation = [NSBlockOperation
blockOperationWithBlock:^{
    while ([blockOperation isCancelled]) {
     // do something

} }];

Oops, if you put the codes into Xcode, you’ll see the annoying warning sign shows up and tells you the blockOperation is uninitialized when captured by the block. Xcode is not happy.

__block NSBlockOperation* blockOperation = [NSBlockOperation
blockOperationWithBlock:^{
    while ([blockOperation isCancelled]) {
     // do something

} }];

What about this then? We said earlier in Part One that we can make variables mutable inside blocks by giving them a “__block” storage modifier. And we will get rid of the warning messages from Xcode if we modified our previous codes to the ones shown above. If we try to run the code, it will also work as expected. But… Have we really fixed everything? Let’s check the code from the fundamental stuff. “__block” variables will be retained for blocks to use them because it’s possible that the blocks are still running while the object containing the variables is already released. And how will the “__block” variables be retained? The block will keep a strong reference to them so that they won’t be released unless the block is released. From the NSBlockOperation’s perspective, NSBlockOperation relies on the blocks to perform its task. The last thing a NSBlockOperation object wants is to have the blocks released when they are still needed. Therefore, when you give the NSBlockOperation a block, the block will be copied into the object and the NSBlockOperation will keep a strong reference to the blocks it has. Have you smelled anything wrong with the codes we have yet? If you think it sounds like a memory issue, you are on the right track. Although ARC can dramatically simplify the memory management work for developers, it can’t do anything. Under ARC environment, a strong reference means increment by one to the reference count of the object. When the reference count becomes 0, the object will be released from the memory. In the codes we have, the block has a strong reference to the operation and the operation also has a strong reference to the block. This means the reference counts for the block and operation will never go to zero, which makes it impossible for either the operation or the block to be released from the memory. In Objective-C, this situation is called a “retain cycle”. Since the memory allocated for objects will never be deallocated, the retain cycle will cause memory leaks to the app. Well… What can we do to avoid the retain cycle then? Check out the codes below.
// 1

NSBlockOperation* blockOperation = [[NSBlockOperation alloc] init];
// 2
__weak NSBlockOperation* weakBlockOperation = blockOperation;
// 3
[blockOperation addExecutionBlock:^{
    while ([weakBlockOperation isCancelled]) {
     // do something

} }]; Let’s look at these codes line by line. First, we created a NSBlockOperation object. But this time, instead of using the “blockOperationWithBlock:” method, we used a pretty standard way to create the object by calling “alloc” and then “init” on the NSBlockOperation class. This is because we won’t be able to get a reference to the operation when using “blockOperationWithBlock:”. Then in the next line, we created another NSBlockOperation object but this time, we explicitly gave a “__weak” storage modifier to the new operation object and make it refer to the blockOperation object we created earlier. The magical word “__weak” will prevent the weakBlockOperation to have a owning relation with blockOperation and this will make sure no strong reference will be assigned between weakBlockOperation and blockOperation. Lastly, we added the block to the blockOperation. Be careful, in the block, we will check if the weakBlockOperation is cancelled not the blockOperation. Because the weakBlockOperation is assigned to the value (or rather memory contents) of the blockOperation, the value of their “cancel” properties should always be the same. This is the key to break the retain cycle. The blockOperation will still keep a strong reference to the block. But this time since the block is checking the weakBlockOperation’s “cancel” property, it won’t establish any strong reference to the blockOperation object. The retain cycle is broken. Without the retain cycle, the blockOperation will be released when its reference count is 0 and the block will be released with the blockOperation as it should. The weakBlockOperation is “weak” by its nature thus it will be released with no problem when it’s out of scope. We have solved this memory manage management issue.

Where To Go From Here?

In this part of the blog, we introduced NSOperationQueue, NSOperation and one of its concrete subclass, NSBlockOperation. We also solved a memory management problem in our bonus chapter by utilizing our knowledge of NSBlockOperation and blocks. Hopefully you can find some useful information from this blog. If you want to lean more about blocks and NSOperation, please refer to Apple’s guide on blocks programming and don’t forget there is alway the class reference for NSOperation.

iOS7 – Unlocking Enterprise Mobility

By Phillip Garton

iOS 7 has brought about a fresh new face to Apple’s product line and with it, many new features for the consumer market. iOS 7 has come with a new layered UI, new integrated apps such as iRadio and many features that have bolstered the gaming and consumer app market. But the unsung heroes of iOS 7 are the extensive strides that Apple has taken to make their products more secure and more configurable solutions for the enterprise market, furthering the gap in this segment from its competitors. In this blog post, we will look at some of the key features that make Apple products the “go to” choice for enterprises running both Corporate Supplied Devices and Bring Your Own Device (BYOD) networks.

Find My iPhone

A key issue facing all enterprises is how to handle a lost or stolen device that contains corporate information.  iOS 7 goes a long way to address this issue. Find My iPhone can be accessed from another iOS device, an iCloud account through the web, or iCloud when it’s installed on a computer. This utility can locate your device, lock your device, or wipe it remotely. The only way to gain access to the device is to log on with the iCloud account that it was activated with. This remote access to the device gives the owner great control over the security of the phone. Find My iPhone doesn’t restrict this functionality to the sole owner of the phone. Apple has extended this feature to the enterprise as well. Find My iPhone can also be used  by IT when the device is registered to a MDM. Through a MDM IT can put the device into “lost mode” when it has been lost or stolen. This feature greatly extends the reach of IT for mobile devices and goes to great lengths to give more control over devices that are utilized for corporate purposes.

Touch ID

Available on iPhone 5S models, the fingerprint identity sensor  adds an extra level of security to the device. The 500ppi fingerprint sensor embedded in the home button can keep data more secure with a unique  identifier that we all already posses: the fingerprint. As this doesn’t bring true two-factor authentication to the device, the passcode is reserved as a backup to the Touch ID. However, the passcode is utilized when the device is restarted or has not been unlocked for 48 hours. This enables enterprise IT to enforce secure passcodes (7 or more characters), while allowing easy day to day access to the device.

Open in Management

Open in Management gives IT greater control over how corporate data is used, once on the device. This is achieved by giving IT control over what data is opened in what app on the device, possibly keeping sensitive data from being opened in unauthorized apps. How this effectively works is by the following means. Managed apps can only send data to other managed apps, i.e., work apps can only talk to other work apps, while unmanaged apps can send data to both managed and unmanaged or they can send only to unmanaged apps. This helps control the data, so that corporate data can not be shared or opened in unwanted apps.

Per App VPN

The use of VPNs is nothing new. Corporations have used Virtual Private Networks to keep their networks secure and restrict outside access to the network. The issue with a VPN is that, while the user is  connected to the VPN, all traffic – including personal traffic –   is routed through the corporate connection. Per App VPN removes this issue by allowing only managed apps data traffic to be routed through the VPN connection, minimizing network traffic, thus giving a greater level of freedom to the user, as personal traffic stays outside the corporate network.

Enterprise Single Sign On

Handling app authentication can now be achieved by only signing on once. Enterprise single sign on (SSO) means that the user only needs to log into corporate systems once. This is available for app purchased from the app store as well. Each app that is configured with SSO, confirms roles and permissions for access corporate systems, thus eliminating the need for multiple log ins. This greatly increases usability of multiple applications on a users device. However, this comes at a cost: for SSO to work in most environments, it must be connected to a secure network.  This limits its use to local networks or VPNs, as home networks, public WIFI and cellular connections are not secure.

Caching Server 2

Caching Server 2 now supports iOS 7 and runs on a corporate Mac running OS X Server.  Caching Server 2 allows the caching of purchased content and software updates on a local networked Mac. This allows for the download and delivery of content through the App Store, iTunes Store and iBooks Store to be greatly sped up, reducing network traffic in all, by allowing users to get content to their iOS devices, over the corporate network.

iWork

Apple has now made iWork a more viable cross device and cross-platform alternative to Office. iWork is now accessible from the cloud and can be ran on any computer Mac or PC through the browser.  Apple has also made iWork apps free starting with OS X with any new purchase. At this time iOS based apps are still $9.99 for each app. Early releases of iOS 8 images show the iWork suite on the Home Tab, bringing the question of whether iWork will become free on mobile as well. If so, this could unlock a large portion of corporate users who still feel tied to Office and grant freedom to view, edit, and create documents from anywhere.

iBeacons

iBeacons are Bluetooth low energy signals that allow the locations of iOS device users, to be found with much greater precision than GPS or Wi-Fi. The range of usefulness of this technology hasn’t yet been fully realized. The applications for this can range from finding a printer in your office building to finding the nearest emergency exit. Apps can alert when approaching or leaving a location. This could potentially even be used for check out at a retail store. Maybe an iWallet? The limits for this could be endless depending on your imagination This is just a tip of the iceberg of the enterprise improves that Apple has made to iOS 7. It is easy to see, however, that Apple knows it’s the choice mobile device for enterprise mobility and they are working hard to keep it that way. Improvements have come in iOS 7.1 and I am sure we will see even greater improvements in iOS 8.

Make sure to check back in June on the Cogent Blog, when we will cover all the latest news from WWDC and how it will impact your Enterprise Mobility!  

A Brief Overview of Android Fragments

By Sean Kollipara

Introduction: Activities

When learning to develop for the Android platform, one of the first components of the Android SDK that you will encounter is the Activity object.  An activity is the basic component that provides UI and functionality in an Android app.  It has a lifecycle and callbacks associated with the lifecycle events, and is contained within its own window.  Multiple activities are usually present in a single application.

For example, consider Cogent’s directory app, mPower mD.  When launching mD, the first thing you see is the login screen.  It is its own activity.  Upon successful login, the login activity closes, and the home activity appears.  The home activity contains tabs that enable the user to navigate through the app content.  This is the basic gist of an activity.

Meet Fragments

Android 3.0 introduced the concept of a fragment.  A fragment can be thought of as a reusable piece of an activity.  It can have either or both of its own UI and functionality.  Like an activity, a fragment has its own lifecycle and set of callbacks to response to its lifecycle events.  Creating a fragment is easy: make a new class that extends the Fragment class.

public class MyFragment extends Fragment {

 …

}

Fragment Lifecycle Callbacks

When creating your own fragment, there are a couple of lifecycle callbacks you’ll want to define at minimum.  The first is onCreate().  It is just like the method of the same name in an activity.  It takes a bundle parameter and you use it to perform initialization activities, such as a call to the superclass.

@Override

public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  …

}

Unlike an activity, a fragment does not have a setContentView() method.  Instead, it has a lifecycle callback named onCreateView().  This is the other callback that you’ll probably want to define.  This callback is used to inflate a view and perform other operations on it as necessary.  For example, you might want to assign some of the UI elements as members of the class if you need to perform operations on them during the fragment’s lifecycle.

class MyFragment extends Fragment {

  public Button mButton;

 @Override

     public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    …

  }

  @Override

  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View myView = inflater.inflate(R.layout.myview, container, false);

    mButton = (Button) v.findViewById(R.id.mybutton);

    return myView;

  }

}

Other lifecycle callbacks for fragments include onAttach(), onActivityCreated(), onStart(), onResume(), onPause(), onStop(), onDestroyView(), onDestroy(), and onDetach().  As you can see, many of these are similar to the lifecycle callbacks for an activity, though a few are specific to fragments only.

Why use fragments instead of activities?

Fragments are an ideal solution when you need reusable pieces of UI and function that go together.  For instance, you might have an app where the phone layout has the main content in the entire screen and the menu in a navigation drawer.  But, in order to make use of increased screen real estate, your tablet layout has the content on the screen with the menu as a sidebar on the left.  The menu, with its UI and own functionality, is a reusable component that can be utilized in both layouts.  The same is true for the content.  Thus, it is sensible to put each of these two pieces in its own fragment.

Why not create and swap views or view groups instead?

This is a good question because it suggests a viable alternative to using fragments.  The main reason you would pick fragments over views and view groups is because they have a lifecycle and a backstack.  If either of these features are needed, it is advisable to use the fragment.  Otherwise, you’d have to roll your own lifecycle or backstack, and that would end up being a project in and of itself.  So the best course of action would be to use a fragment.

Special Types of Fragments

There are a few special types of fragments available for common UI paradigms.  In mobile apps, there are often master-detail design flows, where the master component is a list.  For this purpose, the Android SDK provides a special type of fragment called a ListFragment.  It inherits from Fragment and contains a ListView with the ID @android:id/list.  It can also be subclassed and customized to your liking, provided that the view contains a ListView element with the aforementioned ID.  For more information, see the Android development documentation for ListFragment.

Another special type of fragment is the PreferenceFragment.  This replaces the deprecated PreferenceActivity with a fragment that is wrapped by a FragmentActivity.  The PreferenceFragment can be used in a manner just like the PreferenceActivity in order to load an XML definition of preferences into the UI so that the user can customize the app to their liking.

The Fragment Manager and Fragment Transactions

Android contains a special Activity called a FragmentActivity, which includes an object called a FragmentManager.  The fragment manager allows the developer to manage the fragments that appear in each of the fragment containers defined in a view.  The fragments are loaded, switched, and removed through the use of transactions.

Within the FragmentActivity, you can start a FragmentTransaction by grabbing the fragment manager and calling the beginTransaction() method:

FragmentTransaction txn = getFragmentManager().beginTransaction();

Note: if you are using ActionBarSherlock, you should use getSupportFragmentManager() instead.

Once you have a handle for a fragment transaction, you can call various functions to add, switch, hide, show, and remove fragments:

Fragment myFragment = new MyFragment();

Fragment myOtherFragment = new MyOtherFragment();

txn.add(R.id.my_fragment_container, myFragment, “my_fragment”);

txn.replace(R.id.my_fragment_container, myOtherFragment);

txn.remove(myFragment);

Finally, to complete the transaction, call the commit() method:

txn.commit();

For a full rundown of the available methods in the fragment manager, see the FragmentTransaction documentation on the Android developer website.

Conclusion

Fragments are a bit confusing at first, but with some time spent researching and playing with code, it becomes easy to understand how they work.  Once you begin to incorporate them into your app, you can see the benefits of performance and reusability that they can bring to your Android app development.  For those who are new to fragments, I hope this post has helped to introduce you to the concept and provide a basic level of understanding as to their function and benefit.  Feel free to leave comments, suggestions, and questions in the comments section.

Happy coding!

A Recap of HR 2014

-By Ganpy

As with every year, the first conference in the calendar is always exciting for us. And that too as an exhibitor.  The HR 2014 conference in Orlando held was the first scheduled conference for us. And needless to add, we were planning for this with so much fervor and eagerness, during the past couple of months leading up to the conference. Ingentis GmbH, our partners, were also with us at the conference and we had a great time in Orlando for a week. The below is a quick recap of my experiences from the conference both as an SAP HCM practitioner and as an Exhibitor.

As an SAP HCM practitioner

SAP, after the acquisition of SuccessFactors has definitely been very aggressive in pushing cloud HR solutions in the last year or so. But since the penetration of on-premise SAP HCM has been pretty deep already, it has been and will continue to be a challenge for SAP to get every customer onboard with cloud. They have been reasonably successful till now, in getting all their customers’ ears, but what is also true is that many of the customers are probably doing this, merely because they don’t know how else to react.  Having said that, I believe that SAP on-premise solutions will continue to dominate in the near future, while more and more customers, for the fear of being left out and also due to peer pressure in the industry, will simply purchase SuccessFactors Employee Central and start playing around with the landscape it offers. I for one, expect more discussions in the marketplace and perhaps some confusion as to what is the right strategy for every customer. This also means, some consultants will be busier than the rest, while the general overall HCM consulting landscape will continue to dwindle. In this context, for me, as an SAP HCM practitioner, this conference was particularly interesting to see what kind of mindset customers were in and how the conference & the many educational sessions were going to help them answer some of their questions. I did talk to many customers and I also had some knowledge exchange discussions with fellow HCM practitioners in the market. I met with some companies with interesting new solutions to augment HR systems, much like what Cogent IBS and Ingentis are doing.

Here are my takeaways:

  • There is lot of angst amongst customers
  • The options available for a regular SAP HCM customer are too many that it is not very clear what the best option is for someone at a given point of time
SAP HCM Options

SAP HCM Options

  • There is more acceptance of cloud for HR than a couple of years ago
  • Majority of the customers have either already bought SuccessFactors or are going to in the near future. But how far they will use EC and ECP is an unknown
  • From a consulting standpoint, many established consultants are very optimistic with these changes while some are not, but the universal consensus is that SAP HR consulting will never be the same and the net monetary effect on the consulting industry will actually be negative
  • SuccessFactors has come a long way from being a standalone Talent Management solution to being the center of the HR universe
  • In about 24 months, we will know if SAP’s SuccessFactors bet actually worked or not

As an Exhibitor

Alright. Now, to the more interesting aspect for me in this blog post, that is to share our experiences as an Exhibitor. If you were part of the mailing list, you would have received some of our pre-conference campaigns and you would have noticed that our concept for HR 2014 was “HR Anywhere”. Our main objective was to showcase  our mPower HCM suite of apps – mPower mD, mPower mE, mPower mM, DynaMeet and Ingentis org.manager & distribution.list. In addition, we were also trying to highlight our Mobility consulting and HCM consulting services.

Set Up

Booth Set Up – 1

Booth Set up - Done

Booth Set up – Done

On Monday, the Cogent-Ingentis team (Ganpy, Sean, XP and Markos) finished setting up the booth. And on Day 1, Day 2 and Day 3 of the conference (March 11, 12 and 13 2014), we were there bright and early at the venue, to get things started.

At the Booth - Day 1

At the Booth – Day 1

The below are some pictures from our booth.

At the Booth - Day 1

At the Booth – Day 2

Day 3

Day 3

Day 1 was certainly the busiest, as we met several customers and other conference attendees stop by. As the conference continued to gain some momentum, we were able to get the attention we wanted to and bring some traffic to the booth.

Overall, here are some takeaways from the conference as an exhibitor:

  • The general interest for highly easy to use HR Mobile solutions is high
  • In spite of several HR apps being available in the mobile marketplace, there is no single app that gives user experience the importance it deserves
  • Our mE (ESS) and mM (MSS) apps certainly got the most attention
  • There were at least 5 or 6 potential customers who showed particular interest in these mE apps and we hope to follow up with them in the coming weeks
  • There were some interesting leads for Ingentis as well (for org.manager)
  • mPower mD as an augmented solution for Ingentis org.manager probably was not messaged well during this conference but we hope to do a better job of that in the next conference
  • The idea of selling a standalone Mobile Directory was a bit of a challenge in an SAP conference. But interestingly there were customers who wanted to hear a bit more about Employee Engagement, when we brought that up. As our mD solution continues to evolve, I am sure this is something we will keep in mind

After we dismantled our booth and packed our booth materials on Day 3, we couldn’t help but agree that the conference went by too fast. We had ups and downs throughout the conference and the kind of team we had made it all worth. There were probably a few things that the conference organizers could have done differently to accommodate more exhibitor friendly schedules, but there is never a perfect schedule in such conferences.

So, Thanks to the wonderful team from Wispubs/SAP Insider for putting together a great conference.

We should also acknowledge and thank our partners from Ingentis, especially Markos, for all the help & support they provided for the conference.

Now that we are back at our home bases, we hope to carry forward the momentum we gathered at HR 2014, Orlando.

The next stop will be Nice, France. See you soon! Oui. Oui.