Friday, June 3, 2011

Reflection

I have come to the end of my two week project so I would like to take this post to reflect on what I have learned.
1. Nothing is what it seems. Even tasks we can do easily by hand are complex to program.
2. Programming Apps is all about building, checking and rebuilding until the final product is satisfactory.
3. Take breaks while working. Ideas sometimes come while one is eating lunch.
4. DO RESEARCH!
5. Look around, anything can be the inspiration for an app.
6. Sometimes it's ok to move on when a problem is particularly troubling. It is important to feel productive and not get discouraged.
7. Programming apps is difficult. Don't underestimate the effort it will take.
8. There is always more than one way to approach a problem. Ask friends and colleagues about how they would solve the problem.
9. If you want to be an app designer, don't go half way. Learn how to program. If you discover you hate programming then find a partner that writes code, but doesn't have app ideas. But understanding the limitations of programming will help you have realistic ideas.
10. HAVE FUN! Don't make apps to get rich, make apps to improve lives and have fun.

While there are many other things I learned (like marketing an app), these are the highlights. I have enjoyed finding 2000 ways not to make an app. Part of this project helped me discover that being an app inventor doesn't mean every idea or program is successful. Being an inventor means taking risks and trying new things. Inventors must hope for success and not be discouraged but failure. Ultimately, we need people who are willing to take risks. Without risk takers, there would be no invention. That is the most important lesson of all.

Coming Soon to Google's App Inventor for Android

Yesterday, I mentioned that languages like Java may be better for programming apps and it turns out that Java is the language to use. I was exploring Google's App Inventor for Android, looking for a way to upload code I had written by hand, when I stumbled upon the FAQ page. That was one of the questions. Google claims to be working on a way to upload Java code to the Block Editor so that more complex apps can be developed. So if you are looking to use Google's App Inventor for Android, then you should learn/use Java to write your programs. However, you must also note that there are several limitations in using Google's service. One is that the app can only be so big before it cannot be uploaded to the Android Market. Google is currently working on the problem, but it is still a restraint at this point. Also, while you may soon be able to upload Java code to the site, you will not be able to download anything off the site for use with other software. You can share the programs you create through Google's App Inventor for Android, but only one person can work on a specific account at a time. This limits the ability of multiple people to create an app together, but it still can be done. Personally, I am really looking forward to being able to upload code to the site because then I can write the basic functions of my app in code, then handle all the visuals on Google's App Inventor for Android.

Thursday, June 2, 2011

The Difficult and Complex Beauty of Code

I have said this before, and I will say it again. If you really want to be a successful app builder you need to learn code. Common misconceptions non-programmers have about code are that it is all zeros and ones and that it is too difficult to ever be conquered by the average person. To clear up the first one, I will explain that while the programming language machines understand is only zeros and ones, most code is not written using zeros and ones. There are several programming languages (Java, C++, etc.) that programmers use. Theses languages are then converted into machine language by specific software. I use C++ Language when writing programs. It is one of the oldest languages, but it's simple and powerful. C++ is more basic than languages like Java, so it may be easier to use Java to make apps. Be sure to do your own research before you decide to focus on one language. But since C++ is a basic code that other programming languages are built off I figured it would be beneficial to understand C++ before learning more complex languages. The software I use to program is excellent. It's is Microsoft Visual C++ 2010 Express. It helps you find mistakes in the code, builds the programs whenever you need, and it's free!
Code is beautiful, in that what you write is what you get. However, the difficulty arises in that humans make mistakes. An error in a piece of code could be as simple as leaving out one semicolon in the entire program or having a colon instead of a semicolon. These errors are often minute and difficult to find. That is why it is very important to take your time while writing programs and check over everything carefully. The Microsoft software I use highlights recently edited code and puts red squiggly lines under things that the software already knows will create an error in your program. This is a HUGE time saver! However, some errors still occur and can be difficult to locate. Personally, I find errors easily using the Microsoft software, but some programmers I have talked to suggest printing out the code and scanning it by hand if it is a particularly long string. For aspiring app builders, programming classes and books are easy to find. There are plenty of online classes that you can take or you can go to a community college. The basics of programming doesn't need to be learned in a high class institute. I took an online course and found it better than most classes I have taken in a classroom. Take a class where there is a teacher to call/email with questions. With the start of a basic programming class, you will be closer to understanding the beauty of code.

Tuesday, May 31, 2011

How to Conserve Memory

It is important for an app to not take up too much memory. Apps that take up a lot of memory will take longer to download and errors are more likely to occur in the download process. To reduce the amount of space needed for your app, I recommend having any large pictures, audio, or video files stored online instead of within the app itself. This will make the app smaller reducing the download time and errors. To have your files appear on the app, link the exact web address to the location you need the file. Then when the app is opened and that file is needed the app will access the Internet through the android phone and pull up the file. This is particularly good for apps that employ a list of videos/sound/picture files. However, for background images (or the like), I recommend the files be stored within the app. For example, Screen1 opens and the main image is there along with a menu of choices. If within those menu choices other images are needed, then those other images would be linked to the app through the phone's Internet, but the main image would not be linked.
Words of caution!:
- Make sure the link is exact.
- For Audio or Visual, make sure the link leads to the file, NOT a music or video player.
- Beware of broken links. Check to make sure everything works properly before making your app available on the Android Market.
- If you link files through the Internet, give a notice to users when they download the app that the Internet is necessary for the app to function properly.

Friday, May 27, 2011

Research Available Apps

Part of the app development process involves researching current apps on the market. Look into both successful and unpopular apps. Think about what makes an app successful. Look at the color schemes games like Angry Birds or Fruit Slice use. While I recommend you do your own research as well, here is what I have found:
Ads:
1. No ads if you are already charging for the app.
2. If the app is free costumers will accept some ads at the bottom of the screen.
3. If you have ads on your app make them small, NO FULL PAGE ADS. Users usually hate those and uninstall apps because of them. However, if you need a full page ad have it run right before the app begins to reduce frustration.
Colors:
1. No clashing colors.
2. Colors should follow a scheme. Blues and greens, pinks and reds, etc.
3. Colors should not be too dark or obnoxiously bright. Backgrounds can be dark, but there should be some lighter colors on the screen.
Marketing:
1. Make app be free initially to gain a reputation, then start charging for later downloads.
2. Make two versions of your app. A lesser one as the free version and a highly improved one for a fee. Users will initially download the free version and if they like it will pay to have the better version. Some people may only download the free version, but they are usually the type that doesn't pay for apps. (Remember you can still make money off the free app by having ads)
3. In some cases the sales of an app may actually increase with the cost of the app. Test what people are willing pay for your app.
4. Check to see of there is already an app like the one you are creating. The first app of a kinda is usually the one to corner the market. If there is already an app like the one you are developing, read the comments. Find out the issues with the app and make yours better.
5. Fix errors QUICKLY! Users don't like long load times, frozen screens, inconsistent apps, error messages, force close notices, etc. If you get reports of errors fix them fast before too many people comment that the app is defective. People will uninstall your app if they get annoyed with it. However, if you can fix problems fast, people will be more satisfied. Satisfied costumers leads to better reviews, more recommendations, and ultimately more downloads. The opposite will happen if errors go unfixed.
6. Update your app as often as possible. If you have ever downloaded a popular app you have probably noticed that the producer updates the app every so often. Now too many updates can get annoying, but if there are no updates users will get bored of your app fast. A routine flow of new features will keep people interested.

Thursday, May 26, 2011

The Debugging Process

After you have run your app on the emulator, you will undoubtedly discover bugs in the program. Thus the debugging stage begins. Debugging is the process of going through the program and fixing all the tiny errors in the "code" so that the programming will perform as expected. It is basically the same process using Google's App Inventor for Android, except you aren't dealing directly with the app's code. Debugging a program can take an enormous amount of time, even for experienced programmers. The issue is that each time you "fix" a bug other bugs can be created/revealed. This makes a process that could take a few hours to complete turn into a several day long battle.
Using the App Inventor for Android, the debugging process takes longer than it might using codes like C++ because the only way to discover errors is through testing it on the emulator or an Android device. It is also not always as easy to recognize which part of the program has errors. Usually, you can only identify one error at a time and even when the bug is identified then you have to figure out how to fix it using the Block Builder tools. App Inventor for Android is a lot easier to understand and use of the user has at least some knowledge of basic programming languages like C++. For example, knowledge of Boolean is essential to debugging most apps. But the most important part of debugging a program is not giving up.

Wednesday, May 25, 2011

The Simulator

Once you have finished programming an app, you have to test it out to ensure it will work. On Google's Inventor for Android, you can either plug in you Android phone or use the emulator Google provides. When you attempt "HelloPurr" Google will tell you how to connect your Android phone to the app builder. If you are like me and your Android phone is not compatible, use the emulator. While the emulator is a fabulous tool, it does not always work. It requires a lot of processing power because it simulates all the functions of a typical Android phone. If you are using the emulator on a laptop, I suggest you close unnecessary windows to prevent potential slowness.
To use the emulator, open the block editor. Once it's open and you are finished the program click "New Emulator." A message will pop up telling you how to use the emulator and warning you of potential slowness.When a picture appears on the simulated phone, it is ready to be connected to the app. Go to the block editor again and click on the box that says "Connect to Device" a list should appear with the name of the emulator on it. Select the emulator and wait for the app to load. Go through the processes of your app. If everything preforms satisfactorily then your app is complete, otherwise go back and edit the app. Remember that apps are constantly being reworked. It is rare for an app to turn out perfect on the first try.