Appy Builder – an alternative to MIT App Inventor, with more features

AppyBuilder is a commercial version of MIT App Inventor that, for a monthly subscription fee, provides access to many additional components and features. Some of these features include monetization services that work with advertising networks to display ads with your apps, plus unique features like SQL Lite and the Android Material Design user interface.  You can also add in-app purchases.

There is also a free version that operates similar to MIT App Inventor. You can set up your free account at the Appy Builder web site or sign up for a subscription account with added features.

AppyBuilder is based on MIT App Inventor – if you know how to use App Inventor, you’ll find AppyBuilder very easy to use. The company behind AppBuilder also does custom app development and mobile web site development.

Click on their “Tell me more” button, and then page down to see the description of features and services, and subscription options.

I’ve played a bit with the “free” version but I could see buying a monthly subscription to access several of their enhanced features. Their lead architect also has a blog including this tutorial on how to use their components to access the web, camera and upload photos to a server using App Builder.

—-

Since I moved the web site from my own server over to the WordPress platform, you will often see posts authored by “Coldstreams”, or sometimes “AppinventorPlus”, rather than my name, EdwardM, that appeared on the old web site. I have 4 separate accounts on WordPress and set them up so that my Coldstreams account can update any of the blogs, including this one. Most of my posts will likely appear with the “Coldstreams” name, but it is still just me 🙂 … EdwardM

How to empty the App Inventor “Backpack”

You know about the App Inventor Backpack?

You can drag blocks into the “Backpack” icon at upper right of the MIT App Inventor Blocks editor. Once in the backpack, you can later drag items out of the backpack  providing a nice way to move blocks around or between apps.

Until recently, the backpack was automatically emptied when you exited App Inventor. But … that has changed recently!

A couple of months ago the Backpack behavior was changed so Backpack content is  persistent. That means the backpack retains a copy of your blocks even when you exit App Inventor.

This makes it easier to move favorite code blocks between apps or apps you download from the MIT Gallery.

To empty the backpack, you need to right-click (Ctrl-click on a Mac) somewhere in the whitespace (background) and then select Empty the Backpack from the pop up menu.

Capture

QuickSort routine for your App Inventor Apps!

Sorting data is a common need in many applications. If you have thought about writing your own sorting routine, you likely came up with a scheme that picked the first data item, and then compared it to each of the other elements to find a smaller value (if sorting into ascending order) or a larger value (if sorting into descending order). Finding a match, you switch the two values in your list of data.

Gradually, as you scan the list, the smallest (or largest) value bubbles up to the front of the list. Once the whole list is scanned, you have found the smallest (or largest) value and switched it to the beginning.

Then you would start with the next data value and compare it to the remaining data values. And so on.

Great idea if you came up with this – seriously! In computer science algorithms, this is known as the “bubble sort”. It works fine – but it has one problem – as the number of items to be sorted grows, the time it takes to do the sort grows even faster.

In fact, we say that a bubble sort runs in a time proportional to n^2 (n squared). If there are 10 items to sort, this will take 10^2 or 100 time units to sort.

If there are 30 items to sort, this will take 30^2 or 900 time units to sort. Just going from 10 items to 30 items adds 800 time units to our sorting time! Ouch!

As you can see, the bubble sort is simple but it can take a long time to run!

Computer scientists have invented other ways to sort data. One of the best known has the descriptive name “QuickSort”. In many cases, it’s sorting time is on the order of n ln n (that is n times the natural logarithm of n).

If we compare that to the Bubble Sort for n=10, we get 23 time units and for n=30, we get 103 time units. As you can see, QuickSort is much faster than the Bubble Sort.

Continue reading

appinventor.pevest.com has moved to appinventorplus.wordpress.com

The old URL http://appinventor.pevest.com automatically redirects to the new URL at https://appinventorplus.wordpress.com

The old RSS newsfeed at appinventor.pevest.com/?feed=rss2 automatically redirects to the new RSS newsfeed at https://appinventorplus.wordpress.com/feed/

If you subscribed to the blog via email, you must re-subscribe by going to the new blog URL and clicking on the Follow link near the top of the rightmost column.

If you read this blog via Facebook or Twitter, you do not need to do anything. Tumblr is not yet configured but will be soon.

Old page links, such as those on the Facebook group page like: http://appinventor.pevest.com/?p=1579

will continue to bring up the old pages, making it easy to access older material.

Most comments – except those entered in the past few days – were migrated to the new blog URL. Comments entered in the past few days (after the content was migrated but before the switch over was completed) appear here but not on the new blog.

Benefits of the new web site

  • FASTER web site access and display of web pages
  • SECURE web site access using https – this prevents Internet Service Providers, government agencies and others from spying on what you are reading online.
  • AUTOMATIC SHARING to Facebook, Twitter, Google+ and soon Tumblr. Previously I had to manually cross post items to Facebook and Google+ – and I was rarely getting caught up with Google+. Now the updates will be automatic!
  • EASIER UPDATES as I consolidate my blogs into WordPress, I will have a single interface to reach any of them, which makes publishing easier and faster.
  • MORE TIME for me as I no longer have to maintain the continuous software updates and debugging of multiple web sites. That means more time to post new App Inventor tutorials!

The only feature we lose – I think – is the summary page that automatically created a 2 or 3 line summary of each post and placed those into a single page.

Web site migration update and info on next tutorial/sample code

I posted this item last night, but took it off line as I discovered problems with my web site migration. I stayed up much of the night fixing that – and then we had no electrical power most of today due to a wind storm.
—————————
I completed a migration of my coldstreams.com Internet of Things blog to WordPress. This is a test case before I flip the switch on appinventor.pevest.com redirecting to appinventorplus.wordpress.com.

The process was more complex than I expected, especially getting the automatic redirection to the new web site working as intended. However, with that process understood now, the migration of App Inventor 2 – Learn to Code to the new server will hopefully be able to happen soon and go more smoothly. If you would like to learn how to do this and what I had to do, I’ve written this up to help others: https://coldstreams.wordpress.com/2017/04/08/how-to-move-a-self-hosted-wordpress-blog-to-wordpress-com/

Once these migrations are done, I will be able to focus on creating content and no longer have to spend so much time managing servers!

I expect my next tutorial to be on how to sort data in App Inventor.

A reader has a collection of data with both a name, and a score (it is something else but it is like a score) and would like to sort the collection sometimes by name and sometimes by score.

There are several ways to sort data – some are obvious but slow while some are really fast. My goal is to show how to implement a fast sorting algorithm that works with a list of lists.

In this concept, we will have a list of data, where each element in the list is itself a list. Sounds confusing but the idea is that we can store a data record in each list element and lists are how App Inventor stores records. This means our list will look something like:

Chang, 89
John, 86
Daksha, 92
Samantha, 91
Chandra, 90
Johan, 87
Patty, 94

When we sort by name, we want Chandra as name 1, then Chang as name 2, Daksha as name 3 and so on, with the corresponding scores still attached to their names.

We will do this with our sorting code.

Migrating this blog to a new web site

After running and managing my own blog software since 1995 – all the way back to the beginning of the web! – I am gradually migrating my blogs to WordPress.com. That means the appinventor.pevest.com web site will be switching over to WordPress.com hosting.

I currently run 5 web sites. Managing all of them with frequent software updates, maintenance, anti-malware screening, anti-spam screening, comment review is too time consuming. Plus, I need to convert them over to https secure web access. In reviewing  this, I realized the era of my hosting my own blogs is coming to an end.

Most of the change over will be transparent. You can visit the preliminary new web site here:

appinventorplus.wordpress.com

When I make the switch from this web site to the new one, I will initially just redirect access to appinventor.pevest.com directly to appinventorplus.wordpress.com. I may eventually set it up so that the appinventor.pevest.com domain name replaces appinventorplus.wordpress.com. I also plan to purchase a monthly WordPress subscription so the WordPress ads will go away.

I have 5 web sites to convert and that takes time too. But once done, I will no longer have to spend so much time on the day to day maintenance of my blogs and web sites.

Is your Android battery life too short? Some ideas that might fix it

Periodically, my  Nexus 5 phone’s battery life is terrible. On good days, if I don’t use my phone, the battery discharge rate is slow – many hours later, the battery meter says there’s still over 90% of the battery charge remaining. But when it is bad, my unused phone can have its battery drain in 8 hours.

I have found two things to improve improve the battery life on my Google Android Nexus 5.

  • One is to clear the system cache partition – this cache setting is not accessible from Settings.
  • The other is to replace the Android launcher with Nova Launcher, available for free in the Google Play store.

How to Clear the System Cache Partition

To clear the system cache you need to enter a hidden Android start up menu, usually by starting your phone while pressing the power and volume control keys simultaneously. For specific instructions, see this explanation for the Nexus 5 (it might work on your phone too – this does work on my Nexus 5). Another list from a mobile phone service describes how to do this for other phones (I have not tested any of those).

Every few months, the battery life has gotten really bad. But after clearing the system cache partition, the phone returns to normal performance. I hope this works for you.

I noticed this might be related to my installing lots of apps on the phone, over and over again. Some days I’ll install my test app 10 or 20 or 30 or more times. After a few weeks of doing this every day, battery life problems develop. I clear the system cache partition and the phone is fine again.

You can learn more about the Android system partitions by reading this article.

Part 2: Storing and accessing user interface components as variables

Part 1 showed how to reference and store user interface components as a variable. That tutorial used this method to easily change the background colors of six buttons on screen.

In Part 2, we use this technique to simplify a past tutorial about using a Bluetooth link between and Android device and two Arduino devices.

Continue reading

Security: http versus https and access to the appinventor.pevest.com web site

As you may know, http is the old way to access a web site. https is the newer secure method that encrypts data sent to and from the web site.

Last year, Google announced it would rank search results such that web sites accessed via https rank higher than those using http.

This web page has been using http – which is okay since there is nothing secret or controversial about the content here.

However, on 7 March 2017, Firefox will launch an update that will issue a security warning when visiting web sites using http.

Consequently, we need to switch our web sites from http to https which involves paying a fee to buy an SSL security certificate and re-configuring software and servers.

I have successfully converted my coldstreams.com web site to https as a test for the conversion. So far everything looks good.

I will eventually convert the appinventor.pevest.com web site to use https also. I do not have a date for that – it could be next week or the end of the month.  When I do the conversion, their might be a temporary period where you receive a security warning about accessing the web site, depending on how I do that update.

Part 1: Storing and accessing user interface components as variables

App Inventor programmers routinely store values, such as numbers or text strings (“Hello!”) in variables. For example,

stores the numeric value 6 in to the variable TOTALBUTTONS.

To illustrate by example, here is a global variable named SpecialButton. We can initialize it to anything we want at this point.

Next, inside our app, our blocks code assigns Button1 to the variable SpecialButton. SpecialButton now holds a reference to the actual user interface control Button1.

Since SpecialButton is a variable and not an actual button, we cannot directly use a SpecialButton.Click handler but we can use a feature of App Inventor to do the same thing in a different way. We will see how to do this in this a bit later.

You can store any App Inventor components – a Clock, a Bluetooth device – any component, in a variable.

Why would you want to do that? We will see in the example in this lesson.

This tutorial is in both written form and as an online video.

Continue reading