We are currently in the very early stages of development; what we call our “alpha release”. It is far from being the final product but it IS functional and has been tested on various web technologies to see how well it can bring the Store Locator Plus service to non-WordPress sites.
We are now opening up our private invite to the Alpha Release of My Store Locator Plus. The select few users that are granted access will help guide us in the features and overall user experience that will make it into our initial public launch coming in early 2017.
Chase introduced me to Netbeans a couple of months ago. It looked cool, but as with any dev tools there is some inertia involved in switching to a new editor.
I’ve been using Netbeans on my Linux dev box for about a month now. While there are some quirks and some problematic areas with Netbeans, overall I have grown to like it more than jEdit, gvim, WinEdit and a handful of other code editors. It is well balanced between the powerful, but often way to “heavy”, Visual Studio platform and the weaker editors like jEdit.
My favorite features I’ve come to discover & use on regular basis:
Netbeans will create projects based on current source directories. Tell it the basic project type, such as PHP, and the starting file. It tries to be intelligent about the structure of your code by doing semi-intelligent crawling. It does a decent job. The thing I really like about this is now that I have a dozen source directories setup as projects I can use the other tools (see find below) to locate stuff wherever it may reside.
“Find In Project” (ctrl-shift-f)
Netbeans will build a project based on a source directory you specify. It crawls the source and builds a semi-intelligent index, which is a nice feature for “object browsing”. However this quick search tool is my “go to” for locating “stuff”. You can easily setup include/exclude patterns using system tools like “exclude this folder” or regular expressions. The regex include/exclude is easy to use and super-powerful. This same tool allows you to search “all projects”, “all open projects” or just the current project.
Highlight a function or variable and right-click. Use Navigate to find the definition or all occurrences (usage) of the same variable/function/thing-a-ma-bob. Very nice and cuts down on my “find in project’ searches, especially when I want to modify a definition.
I’ve not seen this in a decent PHP editor before, but it works much like the Visual Studio tool. Start typing a method/function name and it pulls up all possible methods/functions and their property variants. If you have optional params it lists those as different variants. If your commenting on the declaration is well formatted it will also show you the description of the function, what the parameters are meant to do and more. Scroll, pick one of the prototypes from the list and press enter and the call is put into the inline code, press tab to jump to and replace each param.
This kind of goes with “Smart Complete”. It took me 6 weeks of using Netbeans to find this because I NEVER write the code first then add the comment block. I always put a stub comment first, then go back and fill it in. I happened to paste in a function from elsewhere that had no comments, went above it and typed “/**”. Netbeans automatically created a comment block with all the params listed. That was cool.
You can learn more about auto-created comments and auto-completion here:
So I’ve grown to really like Netbeans. Yes, it has some issues but overall the benefits outweigh the problems.
I know Eric has a plethora of Emacs tips & tricks he’s shared over the years. What about others? Do you have a favorite editor or IDE? What are the cool tricks you’ve found? Or if you use Netbeans, what other shortcuts have you discovered to help you manage/write code?
While you don’t need to know how to code in Java, you will need Java installed on your computer. Don’t worry, your computer probably already has Java on it. If not, it is usually a simple process to install or upgrade Java on your system. It is not any more difficult than installing or upgrading Flash. That said, sometimes getting Flash or Java upgraded and installed can be a challenge depending on your computer security settings, hardware, disk space, memory, and other unique factors that require you to hire a Comp Sci major just to get started.
Notes about App Inventory and Java…
Requires Java 6.
Upgrading (or intsalling) Java can be a challenge on some systems.
Get Java at http://www.java.com/inc/BrowserRedirect1.jsp?locale=en
Java Exposes It’s Ugly
Now that we have our Java environment up-to-date we can get started. Surf to your App Inventor login and launch the program. If everything is going well you can follow the Google tutorial and start creating your first app, a picture of a cat that will meow when clicked.
This is where things get ugly for App Inventor and Java.
There are 3 main parts to creating your App Inventor mobile app:
The App Inventory Palette – where you draw your interface by dragging & dropping components onto a mockup phone.
The Block Editor – where you drag and drop logic components using a puzzle analogy. In essence you are writing Java code visually.
The Phone – connecting your Android phone is your staging (or testing) environment to see how things really work when “glued” together.
All was going well. The palette came up, got the button, the photo, the MP3 file all in place. Got the phone connected and the PC loaded the device drivers for the HTC Incredible being used as the test device.
Ok… let’s start writing some code. Fire up Block Editor. And…
We get “Java Ugly” in full effect. While Java has some very cool things that deserve bragging rights, over a decade into its existence and it still retains the uglies UI contest hands-down. Not only do all default Java interfaces look like they were designed for a 1987 character based terminal, they are often less than helpful in helping you interact with whatever files, folders, devices, or web addresses you need to resolve a problem.
In my case the “command interpreter” that allows the App Inventor to talk to the phone cannot be found. The ugliness ensues:
Yikes. Welcome to 1987.
Fixing The Missing Blocks Command Directory
Turns out that I missed an important step before setting up my environment. Not only do you need to upgrade/install Java, but you also need a desktop program that Google App Inventor uses to communicate with the phone (among other things). The Windows version is here:
Next Problem : Windows And Google Not Playing Nice
The next problem we run into is that the Block Editor cannot talk to the phone. It just doesn’t see it. After reviewing the App Inventor setup program we learn that you should “not change the default installation directory”. Virtually every single app on my computer goes on my 500GB D: drive, NOT the default C:\Program Files directory. Wow. Really, “don’t change the default install location”. Back to 1987 I guess.
So we uninstall the application. Re-install it in the default place. All is good, right?
Well, not so fast. Now the Block Editor is looking in the original D:\ install location but it cannot find some of the necessary components.
Great. Copy all the components over from the C:\program files directory. Still not working. Uninstall and delete EVERYTHING. Reboot… we’ll be right back…
Windows Serves Up EPIC Fail
We’ll be right back, my butt. On the reboot windows decided my Windows account no longer exists. I was immediately greeted with a rather useless “The User Profile Service failed the logon.” message as soon as I tried to get into my Windows account on my local PC. Great. Off to safe reboot & finding the answer.
Now for the favorite part of my app development experience. REGISTRY EDITING.
Yup, that’s right. To restore my account back to normal I had to edit the windows registry. What fun. Luckily that is all it took and the instructions I found on the Microsoft Support site actually worked. If you ever need to do this yourself, make sure you sacrifice the requisite number of goats then follow this link:
Ohhh… wait… no devices found. The editor is open, but it can’t talk to my phone. The phone is in the proper USB debug mode. No communication with the device. Wonderful.
It turns out that the AppInventor_Setup_Installer executable that we downloaded (all 90MB) may NOT have the proper driver for the HTC Incredible phone, even though Google notes it as one of the phones that works with this development IDE. Now we need to go to the HTC site and find the right driver and try this all over again.
Just to make matters even more fun, there is no simple “HTC Incredible” device driver. However, even with the phone attached to my PC and visible as an external device, a visit to the Device Manager in windows shows it as an unknown device with a name like “ADB”.
Setting Up HTC Drivers for Windows
So here I am, no obvious HTC Incredible drivers. Some hints on the “Internet at large” indicate that the full blown 30MB HTC Sync application, WHICH I DO NOT WANT, will have a driver for the phone packaged up in there. I sure as heck hope it doesn’t mess with my already working perfectly Google Sync program that keeps my contacts, calendar, and email all perfectly in sync with the Toshiba Thrive table, HTC Incredible phone, and my Windows desktop. We’ll see.
For now, I sit and wait… going on 15 minutes now… for a 30MB file to be downloaded from what must only be direct via mainland China on the 宏達國際電子股份有限公司 (HTC Corporation in case you’re wondering) website. I’m on a 50MB/10MB line, but this is slow as heck. Must be getting interrupted by some goats, stray chickens, and a stray tank rolling over the fiber line before it tunnels it’s way under the Great Wall on the way to The States. Man this is slow. Guess I’ll go practice more guitar lessons while I wait…
Installation of the HTC Sync program got the drivers. Sadly I had to start the installation, let it install Adobe AIR, the HTC driver, and some other junk then cancel out right at the start of the actual HTC Sync installation. At least I got out of that.
Next.. maybe we can code our first app.
Not So Fast…
Wow, this sure is a LOT of work for a supposedly easier way to develop Android mobile apps. I had Java, Eclipse, the SDK and my first mobile app written the “old fashioned way”, you know… with CODE and an tried & true ID like Eclispe, done in much less time than the 4+ hours getting this setup.
My intention was to write a quick article on actually using the App Inventor IDE, yet here I am writing about how to setup the IDE and how to install drivers and how to debug a failed Windows login.
So much for quick & easy.
Hopefully the next article will be about actually creating a usable app with App Inventor. Stay tuned.
I woke up a little before four in the morning and could not go back to sleep, so I decided to start working on a framework for hone quiz applications we talked about yesterday, tentatively known as A Quiz and Teaching Environment: a.k.a. “AquaTeen”.
My development came to a grinding halt because I need the sun-java6-jdk package, which I can’t get until I get to the office. Even if I could connect to the Internet right now, my connection here is slow, and that package is anything but small. It would not finish downloading between now and then anyways.
In the mean time, here’s how I got up and running doing Android development.
1. Get the latest Java SDK.
2. Go to the Android development site and download their dev kit for your appropriate operating system. It is a zip file around fifteen megabytes in size.
3. Unzip that file to wherever you want to store the Android tools. On Windows I imagine this is an installer that you will be running.
3.a. If you are on Linux then I suggest making these tools available via $PATH. For example, I installed everything in ‘/home/eric/Software/Android’. So then I tacked that directory on to the end of my $PATH, by putting this in my Bash configuration
which lets me run the Android tools from any directory.
4. That dev kit will have a tool called ‘android’. Run this, and you will see a GUI package manager for the Android platform.
4.a. I had to go into Settings and tell it to fetch packages over ‘http’ instead of ‘https’.
5. Refresh the package list and check off the things you want. I installed the latest 2.1 documentation and SDK. Then let the manager install those tools.
Then you will have all the tools you need. Now you have to setup your development environment. Out of the box, Android provides support for two IDEs: Eclipse and Emacs.
* Eclipse :: There is an ADT plugin that comes with the Android platform for creating Android projects and integrating with tools like the emulator. I did not go down this route (imagine that) but it sounded simple enough to set up. I believe you will need Eclipse 3.5 for this, which you should have anyways if you use Eclipse.
* Emacs :: In the place where you installed Android you will find a file ‘/tools/libs/android.el’. Put this wherever you store
your Emacs libraries and (require 'android) in your Emacs configuration. I also recommend finding ‘android-mode.el’ by R.W. van ‘t Veer and loading that as well. It provides an Android minor-mode that let’s you spawn off things like the
emulator and debugger out of Emacs.
For development you will need an Android Virtual Device, or AVD. You can create these using the same package manager mentioned above. At a minimum you will need one of them, although you can create as many as you feel like. Keep track of the name of the main one you want to use. In Eclipse and Emacs you can designate a default AVD to use for testing. In Emacs this is done by setting the value of android-mode-avd. I suggest just doing this by running Customize, i.e.
M-x customize-group <RET> android
But if you wanted to put it in your config file, or a special Android config, you can write something like:
(setq android-mode-avd "MasterShake")
Once you’re environment is setup you can create a project. I already made one for the AquaTeen project and put it into version control, so that one can simply be cloned. But here’s how you create new projects from scratch.
1. Find out what platform versions you can target by running:
$ android list targets
You will probably only see one result. You will need the target ID number.
2. Run the ‘android’ tool to create the project. Here is what I did, then I’ll explain the parameters:
The target is the ID of the platform you got from the first step. The path is where you want to create the project. In that directory Android will create all the stub files you need to get up and running. The package is the namespace you want to use for code on this project. These things are straight-forward.
The activity is the name of the activity class you want to use, and requires the most explanation.
Android applications do not have a single-entry point. That is to say, there is no ‘main()’ method anywhere. One Android application can re-use parts of another Android application (if that other app allows it). This makes it possible to re-use things like UI elements across different apps. This is accomplished via “activities”. Each activity in an application is responsible for providing some aspect of user interaction. If you application lets the user do multiple things, those are all represented by separate activities, and each activity can be the starting point for running the application.
When creating a new project you provide the name of an activity, because you at least need one.
If all is right in the world, with all of this done you can go into your project directory and run:
$ ant debug
Or in Emacs ‘C-c C-c c’ to compile the project. But that’s where I ran into the problem of not having the Java 6 JDK, so I can’t help you beyond that point.