Cool App Contender: Floccipender the Word Descrambler

FloccipenderI used to be big into some word games on my smart phone. I couldn’t help but think “I could write a program to solve this,” and it turned out some people did. Most of the solvers I saw were pretty slow or limited. Enter Floccipender – the super fast, super powerful word descrambler.

Get it on Google Play

The name comes from Floccinaucinihilipilification and floccipend which mean “to estimating or categorizing something as worthless, or regard as insignificant.” Floccipender is anything but insignificant.

In the overview video Anthony West of ASW Software goes so far as to show the custom algorithm that descrambles the longest word in the english language (pneumonoultramicroscopicsilicovolcanoconiosis at 45 letters) immediately. The application is developed with FireMonkey and C++Builder for Android.

As Anthony West describes Floccipender:

It is a really fast word descrambler and single word anagram finder. It is extremely fast at descrambling words! 12+ scrambled characters are solved in less than a second on a modern phone.

The main point of this app is how fast it works. It uses my own unique algorithm that determines likeness of words, regardless of their scrambled order. Beyond that, it is a fun app that comes in handy for solving word problems, or for cheating at scrabble.

There is a second video that shows the app running on an actual Android device, and it is just as fast.

I love cool algorithms and am interested in digging into it in more detail to understand how it works. I’ve got my suspicions, but not positive.

Built with Embarcadero C++BuilderPowered by Embarcadero FireMonkey

 

Posted in News | 1 Comment

MVP of the Week: Germán Estévez

German Estevez RuizThis week I am spotlighting Germán “Neftalí” Estévez from Barcelona, Spain. He is a regular contributor on the ClubDelphi forms, which he also administers. You can also find him on Stack Overflow.

Stack Overflow Netfalí

But I want to highlight a couple of his recent blog posts which can be found at neftali.clubdelphi.com and althought he’s started blogging on community.embarcadero.com too. His blog posts are in Spanish, but Google Translate takes care of most the heavy lifting, and his code samples are in the common Delphi.

Managing Audio on Android

This is a great guide to managing the hardware on Android. It shows how to work directly with the Audio Manager via the Java bridge. This is also useful if you are not familiar with using Android APIs directly.

The NASA Astronomy Picture of the Day

This is something I’ve thought about doing in the past. The APOD is a great new photo everyday. Turns out they have a web service you can use to access that picture. Germán shows how to access the web service, then download and display the pictures.

One thing I like is he includes short videos with many of his blog posts, as well as source code download.

Embarcadero MVP

Posted in MVP, News | 5 Comments

Cool App Contender: AlignMix Professional

AlignMixI’ll be honest, if you described AlignMix to me I might fall asleep, but after seeing the video of it in action I find I am trying to find scenarios to use it! Simply put, AlignMix is used to divide and map territories. But wow, it does an amazing job at it.

Embarcadero Cool App ContestI’ve been in situations where I was trying to divide up maps for different purposes. We were using paper, and it was tedious. You would move one line, and then total up the different territories only to find you needed to move another line. At the time I just assumed it was one of those narrow niche projects that wasn’t worth creating a software solution. I’m glad I was wrong.

According to Steve of AlignMix

AlignMix is a Geographic Information System which helps companies to design and manage sales territories for their sales force. It enable the user to easily move the territory boundaries and re-assign zip codes (or postcodes) to make the territories fair and balanced. It was launched on April 8th 2016

AlignMix is cool because it’s so easy to use. We have focused on giving the user the best possible user experience. Even though designing sales territories isn’t normally regarded as an easy and enjoyable task we are getting feedback from users saying they just love to play with AlignMix. You can see user testimonials and more on the website www.alignmix.com

It is a Windows desktop app, but is also designed to work with touch screens. Developed with Delphi and the VCL it makes heavy use of the Parallel Programming Library and Generic collections. It also uses DevExpress Bars (Ribbon) and Edits, TMS Components, TMS FlexCel, TChart Professional, Google Chrome Tabs, OnGuard and EurekaLog.

Built with Embarcadero Delphi

 

Posted in News | Leave a comment

Cool App Contender: Mimix 3D Profile Scanner

Embarcadero Cool App Contest

This brings me to the next contender in the Embarcadero Cool App Contest is the Mimix 3D Profile Scanner by intricad. It uses a really cool technique to capture a 3D impression with only your monitor and a standard webcam.

mimix 3D Profile Scanner Personal allows you to make 3D impressions using your webcam and PC monitor screen. mimix 3D Profile Scanner Personal uses a set of 4 black and white patterns which are projected by your computer screen while your camera captures the images of your face in front of the screen. The images are then processed to reveal a 3D impression.

Under proper lighting conditions mimix 3D can capture scenes and objects with incredible detail recovery.

Create cool effects by relighting the scene or 3D print your impression.

It is built for Windows using Delphi, VCL, TMS components, Eurekalog and ShellBrowser.

Check out the video or download the scanner for yourself!

Built with Delphi

Be sure to enter you cool app for a chance to win a $2000 credit. New winners every month!

Posted in News | 2 Comments

Cool App Contender: Rain in Denmark

Embarcadero Cool App ContestA few years ago my wife and I flew to Denmark to meet Jens Fudge and I had the great opportunity to speak at the annual DAPUG 2 day event. My first trip to Denmark was a great treat. This brings me to the next contender in the Embarcadero Cool App Contest: Rain in Denmark by DHI Group.

Rain in Denmark

A complete (Windows , OS X, iOS &  Android) cross platform suite of apps to access the Local Area Weather Radars installed here in Denmark by DHI Group. “This app provides you with up to date information on rain in parts of Denmark using DHI’s Local Area Weather Radar (LAWR). You can animate the radar images, load data from specific period, see plots of mean area precipitation for selected calculation areas and more.”

Rain in Denmark is built with RAD Studio using Delphi, FireMonkey, TMS WebGMapsRemObjects SDK and AppAnalytics with support for Windows, OS X, iOS & Android.

Check out the video, or download the app and check it out!

Download on the App StoreDownload on the Mac App StoreGet it on Google Play

Windows download coming soon!

Built with RAD StudioPowered by FireMonkey

 

 

Posted in News | Leave a comment

Cool App Contender: BriskBard

Embarcadero Cool App ContestI’ve been a convert to Chrome for a while now, but BriskBard may just be the browser to convert me. It is written in Delphi, and is a contender for the Embarcadero Cool App Contest. BriskBard is a complete Internet suite capable of doing the most common tasks in Internet with only one program.

BriskBard

BriskBard is the new web browser for Windows that includes an email client, a media player, a news aggregator, a contact manager, an FTP client, a newsgroups reader, instant messaging, and several web developer tools. BriskBard has all the features most of the people use and some advanced features for web developers. Its user interface is easy, fast and intuitive with many configuration options.

Powered by Embarcadero DelphiBriskBard is built with Embarcadero Delphi for Windows using Indy, VCL, OpenSSL, SQLite and Hunspell.

It has an impressive list of features. Check out the video or download the fully featured 30 day trial in English and Spanish. Other languages can be added via the language manager.

Posted in News | 2 Comments

Cool App Contender: AtlasBuilder

Embarcadero Cool App ContestThe next contender for the Cool App Contest that I am highlighting is AtlasBuilder by Kollányi Péter from Hungary.

Atlas Builder
AtlasBuilder makes it easy to create an atlas and pack it into an encrypted db. Then generate a ‘viewer’ app. Built with Delphi

Built with Delphi for Windows using VCL, the Parallel Programming Library, FireDAC, DevExpress and TatukGIS DK.

Check out the video (no audio) for a quick demo, or follow them on Facebook for updates.

 

Posted in News | Leave a comment

Cool App Contender: HOP (Hunger Obesity Prevention) App

Embarcadero Cool App ContestThere were a lot of amazing apps submitted for the Embarcadero Cool App Contest. Last month’s winner was 1Password for Windows. Any entries that don’t win one month, are automatically eligible for the next month. We will have our next winner shortly.

In the meantime I thought I would highlight a few of the entries that caught my attention. They are all very cool apps.

Sherwood Middle SchoolThe first one I want to highlight is by two sixth grade girls, Suresh and Safalta, from Sherwood Middle School in Shrewsbury, Massachusetts. They created an app to help tackle two big problems at the same time: Hunger and Obesity.

The idea is brilliant: Educate users on lowering their caloric intake to reduce obesity, and then provide a way for them to donate the money they would have spent on junk food to those who are hungry.

One thing I really liked about this entry is they didn’t start with Delphi. Their school taught them to use Java and Python, and they tried a few different tools. They found they were difficult to use, hard to understand and took a lot more code than they wanted. Then they tried Embarcadero Delphi and found it really easy. As they put it, “Embarcadero provided [an] easy button tool for compiling codes for multiple devices including android, iOS etc. which helped us to develop app quite faster. We are planning to recommend the use of Embarcadero [Delphi] to other kids interested in developing apps.”

They used Delphi with FireMonkey, LiveBindings, FireDAC and SQLite to build their app for iOS and Android. Watch their video as they explain obesity and how their app works.

I’ll share some of what they wrote in their entry too.

Obesity in children and young adults is a global health problem among developed countries. United States ranks first in the world with 35% of male, 39.5% female children, and young adults suffering with obesity. Obesity in children affect an estimated 41 million children worldwide, as per World Health Organization (WHO) and United Nations Children’s Emergency Fund (UNICEF). Obesity leads to major health problems including, type 2 diabetes, high blood pressure, high cholesterol levels, fatty liver disease, gallstones and heart diseases.

Similarly, malnourishment and hunger in poor countries affect 159 million children causing nearly 3.1 million children to die each year in the entire world, as per WHO and UNICEF.

Our goal is to help and motivate kids from developed nations by encouraging them to lose weight by eating less, and use the money saved, to help feed hungry and malnourished children living in poor countries. To achieve this goal, our objective is

  1. To provide a free to all Hunger and Obesity Prevention (HOP) App to help children with obesity, encourage them to lose weight through making conscious efforts to engage in physical activity, avoid junk food and promote eating healthy foods.
  2. Then provide an opportunity for HOP participants to celebrate their achievement, by pledging to donate 25 cents/pound lost to UNICEF for feeding hungry children, as a motivation to lose weight for greater cause.

Purpose: Overeating and genetic reasons are important factors in causing obesity. Eating more food, particularly junk food and lack of physical activity leads to accumulation of excess calories to store as body fat, which then results in weight gain and obesity. Obesity is preventable or reversed by consciously taking control of what you eat, and burning excess calories from the body by exercising regularly.

Our long-term goal is to make an advanced version of HOP with ability to take pictures of food/snacks/drinks and estimate calorie contents, select meals and retrieve calorie information from restaurant menus to keep track of calories consumed each day. In addition, we plan to integrate activity-monitoring apps like “Fitbit” or “Pacer” and precisely monitor the progress with physical activity in fighting obesity.

This basic version of HOP is intended to determine if the user is obese, then set goals to lose weight, track physical activity, dieting plans (such as healthy eating, avoiding junk food and salty snacks), record weight over a period of time. When the participant succeeds in losing 1 pound of their body weight, it means they have cut or burned 3500 calories.

Now we ask the participants to make a pledge to donate the unused calories for saving the lives of starving children. By pledging to do so, it gives a cause for participants with obesity to lose weight and hope for hungry children fighting to survive.

UNICEFOur HOP App designed to pledge 25 cents to UNICEF on their behalf as a way to celebrate their achievement. However, in future users will have options to donate to any charitable organizations that are associated with feeding hungry children. Our mission is to help ending obesity and hunger in children and give them the gift of life, through motivating obese children to SHARE CALORIES with hungry children.

I’m really excited to see their app develop, and it is great that they chose RAD Studio and Object Pascal / Delphi to build this. Especially with 10.1 Berlin it includes easy components to connect with health devices like scales, heart rate monitors and cadence sensors.

Good luck to Suresh and Safalta!

Posted in Android, Internet of Things, iOS, Mobile, News | Leave a comment

More on 1Password’s Components

Stefan van AsStefan van As of 1Password fame sent me a more exhaustive list of the libraries and tools used in 1Password. I thought I would share it with everyone. He also recently started blogging about security, software development and Delphi.

Here is an overview of the 3rd party components used in 1Password:

  • 1PasswordBrowser Helper Objects (BHOs) — this is what powers 1Password inside Internet Explorer.
  • Bonjour — this is what powers Wi-Fi Sync. (here is an unrelated Delphi
    implementation
    )
  • ChilkatCrypt — this is what powers some of our crypto
  • MS Crypto — this is the Pseudo Random Number Generator (PRNG)
  • DISQLite — Some of 1Password’s features – such as Watchtower, for example – are utilizing SQLite. Because 1Password 4 is in Delphi 2007, we use DISQLite for that (today, it would be using FireDAC for that)
  • dxgettext — this is used to localize 1Password. It works nicely with Crowdin, a localization project management platform
  • GraphicEx and Graphics32 — this gives (alpha channel) transparency
  • HyperString — super fast string handling routines. (no longer available)
  • OpenSSL — this is what powers PBKDF2 (among other crypto routines)
  • sgcWebSockets — The WebSockets are used with the Chrome and Firefox browser extensions
  • StreamSec — another crypto library, mostly for SSL/TLS
  • zlib and LibTar — for OS X-compatible compression routines

Also uses the following tools:

A lot of great tools and libraries there.

Posted in Article, News, Tools | 10 Comments

FireMonkey and the Android Misconception

FireMonkey(300px)When it comes to Delphi, C++Builder and FireMonkey’s support for Android, there are 5 caveats.:

  1. ARM Cortex-A series CPU (not Intel Atom)
  2. ARMv7 Instructions
  3. NEON Technology
  4. GPU
  5. Specific versions of Android

At one point there was some attempts made to make a list of devices that were supported either completely or partially, but new devices were coming to quick to track. This lead to the misconception that FireMonkey apps only run on a very small subset of Android devices.

Since that time there have been a number of improvements to the compiler and the FireMonkey framework. Also the landscape of Android devices continues to evolve and change. Yet I still run into people who believe that FireMonkey still only runs on a small subset of devices. I thought I would provide an update and set the record straight.

Tegra 2 and NEON

Shortly before Android support was added, the Tegra 2 processor was in use. It was ARMv7 and Cortex-A, but lacked the NEON SIMD extension. So what is NEON? NEON is a SIMD (Single Instruction Multiple Data) instruction set. When it was introduced it was an option that some ARMv7 processors included to improve performance. Since it was optional, the Tegra 2 excluded it.

Intel i487 SXIt seems kind of uncertain to have some processors with some features, and others missing them, especially if you require them for your application to run. This isn’t some crazy thing that only happened with Android and ARM. Back in the time of the Intel 486 CPU (right before things went Pentium) some systems had an optional 487 math co-processor. This co-processor introduced some additional x87 instructions that accelerated some floating point operations. Some programs would be faster on a machine with x87 support, and others required it. When the Pentium came out, it incorporated the x87 instructions into most of the CPUs (there are always exceptions).

Pentium MMXThe Pentium didn’t end up being the “One CPU to rule them all” though. Along came MMX Instructions. MMX is a is a single instruction, multiple data (SIMD) instruction set that was optional for some CPUs (where have I heard that before?) Some programs were faster on an MMX enabled CPU, and others required it to run at all. After a few years, most all CPUs, even those made by AMD included MMX instructions. It didn’t end there. New CPU instruction sets are introduced all the time, but it is rare that they get the same publicity that MMX or the x87 set did.

What does all of this have to do with NEON, besides perspective? Well, Neon is now part of the ARM standard. The new ARM chips in modern Android devices include Neon. They don’t even both listing it as a feature because it is assumed. The R&D team bet on NEON and they won. Since the compiler takes advantage of Neon instructions it is faster than it would be if they hedged their bets and ignored Neon.

Enter the GPU

NVidia 6600GT GPUMuch like the x87 was a separate processor that augmented the system performance, there are many other processors in your computer, specifically around audio and graphics. The big thing about the GPU is that it not only beefed up the existing graphics co-processors, but it took on the 3D and texture operations and ran them through a massively parallel architecture. The original GPU that I had was actually a separate board in addition to my graphics card. Today they are mostly integrated.

On Android they typically go with a System on a Chip (SOC) that includes the CPU, GPU and a number of the other electronics.

The Rise and Fall of Intel Atom

ARM logoARM is an open standard CPU manufactured by many different chip makers, often times under their own brand. A few manufactures include Qualcomm, Texas Instruments, Samsung and even Apple (for their mobile devices). ARM logoIntel wanted a piece of the mobile processor action, but instead of just implementing ARM they introduced the Atom processor. It still used the x86 instruction set of the desktop CPUs, but was designed to be more energy efficient. They put them in Windows tablets and Android devices.

This introduced another division in the Android landscape. There were two different processor architectures. Since most Android apps were written with Java and ran in a virtual machine, it wasn’t a huge deal. Except for games. Most games use native code for performance reasons, so that required either the game to include both ARM and Atom code and libraries, or the game just wouldn’t work on Atom.

Harry Houdini 1899Enter libHoudini. Intel realized that mobile gaming was a big part of Android, and the fact that you couldn’t play a lot of popular games on Atom devices wasn’t good. So they created libHoudini, a proprietary ARM translation layer that translates ARM instructions into x86 instructions for the Atom processor.

libHoudini was around for a while, but around Jelly Bean or KitKat it became standard on Atom based Android devices. This resulted in ARM native apps just working on Atom devices.

Embarcadero was actually in discussions with Intel. There was talk of making an Atom targeted compiler for Android, but work was also done to improve compatibility with libHoudini. Atom was never officially supported (mostly because the market share was too small) so the Android app packager includes a check to say it didn’t work with Atom processors. But you can remove that checker and your app will probably run great on most Atom devices.

While Atom never had a huge share of the market, it looks like it is going to have even less as Intel has cancelled their next Atom processor line.

Android Versions

Unlike Apple, new version updates don’t tend to roll out as fast on Android devices. This means you typically encounter a few different versions of Android running in the wild. It isn’t all that bad though. In my opinion, Ice Cream Sandwich (API 15) was really when Android came into its own. It was Honeycomb (API 14) that finally gave tablets some serious love, and ICS merged those new features back to phones. Anything before ICS is really legacy at this point (at least in my opinion). Android tracks the popularity of Android versions on their Developer Dashboard.

Android Platform Versions Chart

As of May 2, 2016

Ice Cream Sandwich and older only account for a total of 4.3% of Android devices. While there are feature differences between the top 3, nothing is too revolutionary as to make the others obsolete yet.

A Thousand Flowers

Unlike iOS, where Apple is the only company to make devices that run it, Android is EVERYWHERE! I guess I’m kind of a collector of Android devices. I owned the first Android powered watch by WIMM and even created a 6 sided dice app for it. Now that Delphi supports Android I love testing it on different Android devices. Here is a list of my findings

  1. Android Wear – I’ve tested 4 or 5 different Android wear devices, including the Moto 360, and they all worked flawlessly with FireMonkey.
  2. Google Glass – Again, worked out of the box with FireMonkey. We even later added official support. Unfortunately Google is reimagining Glass right now, but I suspect when then new version comes out it will work great.
  3. Epson Moverio BT-200  – Similar to Google Glass, but has two independent translucent lenses so it can do 3D. Runs Android Jelly Bean and works with FireMonkey right out of the box. There is a BT-300 coming soon.
  4. Ouya – This was the Android gaming console that was going to change the world. It ended up under delivering, and then not evolving fast enough. It does however run FireMonkey just fine, and I know a few developers who used it for creative projects.
  5. Amazon FireTV and Fire TV Stick –  Designed to work with your TV and running Amazon’s own version of Android. Again worked like a charm with FireMonkey.
  6. Amazon Fire Phone – I think this is a pretty cool device, a shame it didn’t catch on. Also runs FireMonkey apps fine.
  7. Amazon Kindle Tablets – I’ve not tested these, but I know people who have. Again it runs a different flavor of Android. From what I hear some people had to update their OS to get it to work with FireMonkey, but it did work.
  8. BlackBerry Phone – Yeah, I went there, and so did FireMonkey. It worked too, although there are some idiosyncrasies about the OS that show up when you invoke the share sheet. I originally tested it on the BlackBerry OS, which supports Android apps, but now they’ve gone full Android.
  9. Windows Phone 10 – My Windows Phone wouldn’t install the right preview of Windows 10, but Marco had better luck than I and got FireMonkey apps running on Windows 10 Phone under the Astoria bridge. Then Microsoft discontinued it. Windows Phone never had much market share, and continues to dwindle.
  10. Huge collection of tablets and phones, including one with an Atom processor – they all worked (except that one old Tegra 2 tablet that ran Gingerbread).

Since Android is everywhere I’d wager that there is no Android app that actually runs on every single Android device out there, I don’t care what you wrote it with. Now if someone wants to prove me wrong, that is fine, I suspect different Android devices will be released faster than we can test them.

Conclusion

Let’s run through those requirements again and see how big of an impact they really represent.

  1. ARM Cortex-A series CPU – Atom was never big, and is on its way out. Most everything else is ARM Cortex-A (or newer / compatible).
  2. ARMv7 Instructions – ARMv6 is either really old, or used in a micro device like a beacon or some other IoT device. Not in any Android devices. Oh, and ARMv8 is the big thing now. It is 64-bit and runs FireMonkey apps fine.
  3. NEON Technology – Like I said, it is part of the standard now, so unless you have an old Tegra 2 tablet (I still have one) then nothing to worry about.
  4. GPU – All of the GPU compatibility and performance issues I know of have been fixed, and GPUs are standard on Android devices (at least ones with a screen).
  5. Specific versions of Android – Only 2.3% of devices have an unsupported version of Android.

So while FireMonkey apps may not run on every single Android device in existence, most apps don’t and no app needs to. FireMonkey apps to run on the vast majority of them, and that is what matters.

Posted in Android, Article, Mobile, News | 5 Comments