The native low level camera API on Android is a disaster. It's often cited as one of the worst API's on Android. To make matters worse there are two separate API's
Camera2 (yes really). You need to use
Camera2 where it's available but that means no support for older devices. To solve this we picked the Android Camera Kit library when we started building our low level camera support. This proved to be a mistake.
Crisp powers the chat button in the bottom right portion of our site. It also handles emails and a host of other great features. One feature we didn't take advantage of is the mobile app support. To solve that we just issued a new Crisp cn1lib which we integrated into the new versions of our Android and iOS apps.Read More
I try to write about every new feature or capability we introduce but this isn't always possible. Tasks sometimes weigh me down and as they do so I sometimes find something that I totally neglected as it was released. Such is the case with the CN1Webserver library which we launched over 6 months ago.Read More
When we announced the migration to the new cloud servers one of the casualties was the cloud email API. This was a well intentioned API for sending an email from an app. Unfortunately we didn't understand the complexities of modern mail systems well enough when we came up with this API. It turns out that this is pretty problematic. Mail servers get blacklisted and emails fail to deliver.Read More
One of our enterprise accounts is working on a complex GIS application that needs fine grained control over mapping. In this case features such as native maps aren't useful. For some GIS applications the old
MapComponent is more useful as it allows working with domain specific data. One of the features he needed was spatial support in the builtin SQL database.
When we introduced support for z-ordering of peer components in Codename One we listed two major targets. The first was already available: Map. The second was still pending: Camera.
Our current `Capture` API is very high level and removes a lot of the control from the developer. In order to give developers a high level of control we created Camera Kit.
A while back I introduced a MapLayout class as a tip and discussed the usage of this class. Since that introduction we ran into some scale issues as the layout misbehaved when a lot of elements were added to it. The crux of the issue is in the native map API which runs on the OS native thread and the Codename One API which needs immediate responses for layout.Read More
I've been so busy I just don't have time to blog as much as I should. I do hope next month will be better in this regard (more on that below) but right now I have to make an important announcement. There are new chip vulnerabilities I'm sure you heard a lot about specifically Meltdown & Spectre. Thankfully we are at a layer that shouldn't be impacted by these issues but we need to update our servers and will be doing so over the course of the next few days (possibly more as patches get updated).Read More
SVG (Scalable Vector Graphics) is an XML based image format that represents an image as vectors instead of pixels (raster). An SVG file is represented by the set of lines & shapes that make it and can thus be rendered at any resolution without quality degradation due to scaling. It has some other neat tricks up its sleeve but I'm only going to discuss that specific feature today.Read More
Fingerprint scanners are pretty common in modern hardware both from Apple and some Android vendors. The problem is that the iOS and Android API's for accessing them are a world apart. However, it's possible to find some low level common ground which is exactly what our cn1lib for fingerprint scanning accomplished.Read More
One of the primary use-cases that benefits from our recent improvements for native peer integration, is "map apps". That is, apps that use native maps in some shape or form. This is an extremely common uses case for mobile apps these days. Codename One has supported native maps for quite some time, but (up until recently), they were limited by a couple of factors...Read More
We use intercom.io for our website support system you can see it as the chat button on the bottom right of the page. The true value of this tool is in it's ability to deliver a unified interface everywhere, normally this stretches into native mobile apps as well. As a result we decided to port the native intercom device API to Codename One so it will be easy to deploy everywhere.Read More
A couple of years ago I wrote an app for my spouses yoga studio for managing her student list. I intended to open source it but the code is a bit messy and I can't seem to find the time/energy to clean it up. I used the excellent parse4cn1 library from Chidiebere Okwudire during the height of Parse.Read More
Certificate pinning is a security measure designed to thwart potentially dangerous and complex attacks. Since those sort of attacks are pretty hard to execute it's a security measure that is probably unnecessary for most developers. However, if you are building an application for a very sensitive industry (e.g. Government, Banking etc.) you might be required to include this defensive measure.Read More
You probably recently received the “Next Steps from the Parse Team” newsletter in your inbox in which you were urged to take immediate action as it pertains to migrating your Parse.com hosted apps.Read More
One of our enterprise customers needed help with file upload from the desktop. E.g. in his Codename One app running in the browser or desktop he wanted the ability to drag a file. Somewhat like we can drag a file into gmails compose window.Read More
When we initially designed the cn1lib file format we looked at jar files as a starting point. We wanted a way to distribute binary libraries that support the native code access, restrictions and ideally code completion.Read More
When I first read the announcement that Parse.com would shut down on January 28th 2017, I went from disbelief (it’s probably an early April fool’s joke) to rage (how could they do that?!) to sadness (oh no! it was a great service) and finally to utter confusion (where do I go from here and what do I do with my apps - parse4cn1, two MVPs for clients and an upcoming rewrite of Medex for which I was planning to use Parse.com as backend?). A few months down the line, a lot has happened such as the release of the open source Parse Server (yay!) and subsequently the Parse Dashboard. However, I still had to decide what do with my apps and I guess you have to as well.Read More
Chidiebere Okwudire of SMash ICT Solutions just released version 3.0 of the parse4cn1 library. The biggest feature of which is support for the open source Parse server which should work with some of the parse alternatives that popped up to fill the void left by Facebook.Read More
Bluetooth is one of those specs that makes me take a step back... It's nuanced, complex and multi-layered. That isn't necessarily bad, it solves a remarkably hard problem. Unfortunately when people say the words "bluetooth support" it's rare to find two people who actually mean the same thing!Read More
One of the often requested features in Codename One is zip support, we had some issues with it until a couple of years back we added tar and later gzip support. But people still asked for standard zip file support which was missing.
Chen just released a new cn1lib for circular progress indicators of various types. This is an often requested feature and there were many ways to implement this in the past but it is now far easier to do this with shape clipping.Read More
We released a new version of the introducing Codename One video almost a month ago but we just neglected to highlight it in the blog. Our old videos are pretty dated by now and we use far better toolchains for video production today, so we are in the process of redoing all our old videos. This is a long and tedious process that we do while producing newer content, fixes and moving forward. So the timeline of such updates is quite volatile. Check out the new video below.Read More
Chen was working with a customer that needed some specific ad network support and decided to open source some of that work. We now have integration with Flurry both for its ads and analytics support both of which are pretty cool and have some distinct advantages over the current Google equivalents.Read More