Sunday, August 25, 2013

Balmer Leaving Microsoft

I read this article, Balmer Legacy, and found it really interesting. Perhaps I'm a Microsoft fan because I really hate being put into the one size fits all box that Apple products have created, but I think the article hits on the important points about Balmer. Balmer's success was in the behind the scenes arena.

"Looking through the small screen of a smartphone, it’s easy to miss the bigger picture. Microsoft is struggling through the downward cycle of PC sales, but it’s making small but significant gains in phones and search. Its cloud-computing platform is a serious contender and it’s gearing up to launch the next Xbox, building on the huge popularly of the current Xbox 360. ...

While Steve Jobs was winning with the iPod, iPhone and iPad, Ballmer was winning over companies with Microsoft servers and business software. Jobs tried and failed to break into the enterprise server business and nobody cared; Ballmer struggled with music players and phones and was mocked."

I'm not sure that Microsoft is winning the backend of devices either, but it certainly is in the top 3 with Amazon Webservices out in front. But the point is that most people who mock Balmer (at least that I know), really don't understand all the work that goes into running a dynamic website, a backend for a mobile platform, scaling VM across geographic regions based on loads, and all the other things that happen in the background to make devices work well with a cloud connection. 

I certainly think that Balmer has had some mistakes, but over all the general characterization of Microsoft as being backwards and lacking innovation (with Balmer being the poster-boy) is incorrect.  

Saturday, August 24, 2013

World Map App Version 3

I finished version 3 of World Map App. The new release includes a new set of icons, and removal of the menu in the about activity. Also World Map App is now available in Russian!!! My wife was kind enough to do the translation for me.

Users should expect to receive the update in the next 24 hours.

https://play.google.com/store/apps/details?id=com.stackingblockstopreventoverflow.blogspot.worldmapapp&hl=en

I'm working on a CAT bus app right now. The app will show the current location of each bus on its respective route. The app is much more complex than "World Map App" because I'm doing something besides just showing images. I'm using a sqlite3 database to store the bus stop information, and I'm creating nice complex SQL statements to select the exact bus stop time information for the correct season, day, and time.

World Map App Version 4!



I finished up version 4 of World Map App. Key updates include the application size so that it takes up less memory but has the same high resolution maps. Also version 4 includes a Spanish Translation of the app. Users can expect the update in the next 48 hours.

Version 3 included a Russian Translation that drove downloads since it was released. The pie chart below shows the language distribution when I released version 4 a few moments ago.

As you can see, Russian users make up 60% of the user distribution. The next graph shows installations by country. 

As expected Russia has the most downloads followed by the USA and Kazakhstan (which is right underneath Russia, you can look it up on the "Russia" map on the World Map App).

Why all the growth in Russia? I suspect that the English World Map type app market for Android is saturated, but in other languages it is not. Also, I included a nice Russian map in the app.

Time will tell if the new Spanish Translation in version 4 of World Map App will also spur downloads.

 What do you think? Feel free to leave a comment about the best strategy to get your app into different languages?

Spanish Google Play listing.
https://play.google.com/store/apps/details?id=com.stackingblockstopreventoverflow.blogspot.worldmapapp&hl=es

Russian Google Play listing.
https://play.google.com/store/apps/details?id=com.stackingblockstopreventoverflow.blogspot.worldmapapp&hl=ru

View All Files in a Directory on Android

I was having a terrible time trying to figure out how to list all the files in a folder on Android. I know how to easily do it in C#, but java-Android is making life difficult. Finally I figured it out. The seemingly trivial was made difficult by vague exception messages.

The key is that the file you run listfile() on must be a directory. This was not clear from all the examples I found on other websites.

Tuesday, August 13, 2013

Software Life Cycle - Updating Software 1

Part of the software life cycle is to maintain or update the software. I found a quick video on YouTube that is nice and short but reinforces this point.



Updating software can generated tons of new problems and issues, and it is important that the designer of the software takes time during the original creation of the software to do things the right way rather than the short fast way.

So what are some of the things that a developer can do to help make the software easy to maintain??

1. Document everything. In code documentation is the single most important thing to help make software easy to maintain. Different people have different preferences on how exactly the documentation should be written, but no matter how you do it, documentation is key to making software easy to update.

2. A debug mode. When trying to fix software you need to see what the software is doing under the hood. Obviously what the software is actually doing shouldn't be shown to the normal user, but when you go to fix a problem having the software print information to the console or a log file can be invaluable. Also a debugging mode can switch off all "try-catch" statements so that the software actually fails when and where the problem actually exists.

3. Functions/Methods that do just one central thing.

4. Automated tests.

5. Give methods, fields, parameters, classes, and namespaces meaningful names.

What do you think? Tell me in comments below.



Wednesday, August 7, 2013

World Map App v.2

https://play.google.com/store/apps/details?id=com.stackingblockstopreventoverflow.blogspot.worldmapapp

World Map App took a step forward today by receiving its first incremental app update. Everyone who has it installed should receive the update on their Android device in the next few hours.

You can read about World Map App on my previous post.
http://stackingblockstopreventoverflow.blogspot.com/2013/08/world-map-app.html



Saturday, August 3, 2013

Software Life Cycle

Although I haven't worked on tons of software project and I'm still relatively young, I keep seeing common problems in thinking about software development. Perhaps I see more of these problems than the average software developer because I've worked with mechanical engineers and other people who don't know much about software. I'm certainly not an expert and still make these mistakes myself.

The problems is that software development (especially doing the actual programming) is only the very tip of what it takes to produce and maintain high quality software. The false assumption  made is that developing a piece of software will only take a few resources and then "Hooray!!" we have a great software program running with no bugs and everyone is happy. Developing software is like having a car. First you need to do research about what kind of car you need, what you can afford, what is good car for the price range you are looking at, what cars are available near where you live, then you need to go actually test drive a few cars and find the one that you like best. Once you finally buy a car and you are all excited, a lot of work will still need to be done. Insurance, fuel costs, preventive maintenance, unexpected maintenance all add up quickly to make the cost of owning a car quite expensive.

In a similar way to the car, software development has a lot of extra costs. First before any code is ever written you need to decide on the objectives of the program, how will we store and share the source code, how will we test the software, how will we distribute it to our customers, how will we update the software, how will we track bugs and deliver updates to customers. All the extra considerations that go along with software development are normally the root cause of software development failure. Generally software development efforts fail because of something that wasn't directly related to programming.

I hope to talk much more about software life cycle in the future. Until then here is a great article to read. http://spectrum.ieee.org/computing/software/why-software-fails

Thursday, August 1, 2013

World Map App



https://play.google.com/store/apps/details?id=com.stackingblockstopreventoverflow.blogspot.worldmapapp

My newest attempt at supporting myself, my wife, and my little baby on the way is to use my computer programming skills to write Android apps and use the Adsense network along with paid apps to generate money. My strong history in C# programming allows me to switch over to Java without to much trouble. After working on learning the Android API and other Android issues for about a week, I published my first app today on Google Play, World Map App.

The inspiration for app came while Shari and I were in China. We were at a restaurant eating our food and trying to carry on a conversation with the owner using Google translate on my phone. Like any good conversation we wanted to the owner where we were from, but we wanted to tell him in more detail than just saying "I'm an American" (我是美国人, Wǒ shì měiguó rén). Of course the easiest way to show someone where you live is Google Maps and just point at where you live! As I zoomed out I suddenly ran into a problem; Google Maps only caches the maps for the country you are in so if I wanted to show him the United States than it would need to download new map data over the mobile network. Unfortunately my phone's mobile network at that location was pretty slow (actually really really slow), so as I zoomed out on Google Maps almost everything outside of China was blank and it wasn't going to show up any time soon. So Google Maps was not a good way to show someone where we live, and hence the need for a simple offline world map app arose. Another consideration for the app is that it is really simple, and allows me to get my feet wet with programming for Android. 

Key Features:
- offline world maps
- simple

Ideas for Future versions of the App
- More maps
- Higher Resolution maps (probably make a paid version for these because HD maps cost me money)
- Work on the zoom in feature to actually show it in more detail
- Possibly use AdSense 
- Add Translations