VPSs have gotten so cheap and full-featured, I don't know why anyone who has IT knowledge would host any more.

I am legacy hosting on Dreamhost for $10 a month. My MySQL instance has become so slow, I have removed it from my Nagios check. Their old in-house mail web interface is slow as anything (new accounts go to Google Mail, they may have a migration option). Server load can exceed 100, server load is usually many multiples of the number of processors. Dreamhost was considered one of the good web service providers.

Meanwhile for $16 plus bandwidth I get my own VPS on Rackspace, 20 gigs disk space, 512MB RAM, I can install whatever I want. Linode - 1024MB RAM, first 2 TB of bandwidth free, 24 gig hard drive. I put my own Apache in, my own MySQL. I even run BIND 8 on them. Right now I'm using Perl on the server, but I'm free to use whatever I want. And if $16 is too rich for you a month, you can find even cheaper VPSs. Linode and Rackspace have had a decent QoS, and my business is profitable, so I pay a little more.

"But given how eagerly Dalvik disposes of anything connected to a process that'S not in the foreground I wouldn't consider using it to do anything important."

Dalvik has specifications and documented behavior and Dalvik follows that behavior pretty well. You do not see Dalvik disposing of anything connected with a process that is state that it supposed to save. Some state is ephemeral and documentation states it is ephemeral. I have yet to see an object held by a running Service to be arbitrarily destroyed by Dalvik. Offscreen Activity objects might be destroyed, but Android API documentation explains this up front. If you want to hold state in a process outside of the current onscreen Activity, you put it in a Service or like class, not in the Activity object. Activity objects are supposed to be short-lived when they go off-screen.

Dalvik has no problems holding state if you hold state properly in a Service object. If you try to hold state in offscreen Activity objects then you shouldn't be surprised when Dalvik doesn't hold it. It's not supposed to.

Phones like the Samsung Galaxy S2 LTE was available to customers in places like Canada toward the end of 2011. I watched the September 2012 video in which the iPhone 5 is introduced. At one point the speaker (Phil Schiller?) says the iPhone 5 will have LTE support, which is followed by a big round of applause. By then, there were a variety of Android phones in customer hands already with LTE, in a number of countries - and Android users had been using LTE phones since 2011.

I remember older iPhone presentations where they really were announcing new features - not playing catch up to something there had been Android phones out with the year before. That said, the iPhone is a good phone, and they've generally kept pace with the cutting edge of technology.

The Simple Directmedia Library (SDL) is a cross-platform library which there are many apps for, especially games. These games are ofte cross platform for Windows, Mac and Linux, and there are some fairly popular ones.

There is a lot of software out there under SDL 1.2 and before. SDL 1.3 and on was completely rewritten, relicensed and there is not anywhere near as much software out there using it. There are ports of both to Android - the SDL team did a 1.3 and on port, a fellow named Sergii Pylypenko ported SDL 1.2 to Android, as well as a lot of supporting libraries, as well as a number of games.

The best of them is the Quake III Arena clone OpenArena. It was just release and still has a little cleanup to do, but is not that buggy and has a 4.0 rating. He has been fixing it up more and those problems are sure to be dealth with. He has other ports of popular open source games to Android as well - OpenTTD, and GemRB (Baldur's Gate engine). Gerhard Stein has put out some of these - Free Heroes and VCMI (Heroes of Might and Magic engine), Commander Genius and OpenTyrian.

I have done a few of these open source SDL ports as well, with two on Google Play right now. One is an anime-style puzzle game Lily Hop, based off the open source Hex-a-hop game. I think the port came out well, although it is not popular and even if it was I am not exactly sure how I would monetize it even with ads.

Another open source SDL port I did is of the popular Linux math game Tux of Math Command, which I callFree Math Games for Kids. That one is more popular - it has been downloaded over 35,000 times since the summer, and gets several hundred downloads a day. It could probably be more popular if I did more work on it - the original has translations to many languages, but I only offer it in English and Spanish currently. I have just been too busy to implement the other translations.

"I started looking into local community colleges and universities, and much to my dismay, they offer neither nighttime or online courses for computer science."

I don't know where you live, but I would look into this more. I am not sure what you mean exactly either. Do you mean no local colleges have a computer science course where all classes are 100% at night or on weekends? Or that all classes are during the day on weekdays?

I would take a second look at your local community colleges and colleges and universities. They don't have any night or weekend courses? Also, how local is your definition of local? Let's say there was a college 50 miles from you where you could graduate doing weekend courses - that would be an option - you could drive an hour on a weekend afternoon, take a class, and drive back. My college is nearby, but I know people who commute a long way to get to it.

I would map out colleges and universities by distance from you, then see which ones have a CS program. Then go through their class requirements for a CS Bachelors, and see what prerequisites for each class are (some 300 level classes I took had nine prerequisite classes). Then see when classes are offered. My experience has been the initial level 100 math and CS classes tend to have more schedule flexibility (i.e. more classes are offered at more times) then some of the required 300 level classes. You may be able to get half your credits on nights or weekends before having to worry about a required 200 or 300 level class which is only offered during the week in the daytime.

I would start with one class a semester and see how that goes. If you think you can do two classes a semester and full-time work, try that after seeing how the one goes.

In 2006, I went back to school to get a Bachelors in CS, starting with night and weekend classes. Initially, one of the larger reasons for taking the classes was so that I could show potential employers that I have a Bachelors. This kind of thinking has receded as I have learned more CS and have gotten better at programming. For example, I have a side project where I write Android apps - so far this month I've made $1100 on my Android apps. I would have never have been able to do this if I hadn't learned about algorithms, data structures, Java, and so forth at college. So my thinking now is a little bit less, I need a piece of paper that I can show someone else when I need a job, and is more, what can I do with this knowledge I have gained?

Do you have a Bachelor's degree? I began working as a systems administrator before completing my Bachelor's degree. I have always done some amateur programming, but wanted to improve my skills to where I really was a "programmer". So I killed two birds with one stone and started taking one course a semester at a local college. I would go either at night, or on the weekend. Some semesters I took more than one course.

As I said, I already had written programs. I did not have the deeper understanding to write better, bigger and more complex programs though. The computer science program laid a foundation of calculus, statistics, and discrete mathematics. Then it went deeper into graph theory, and the theory of computation. Then we began learning C++. Then we learned more advanced C++, how algorithms and recursion and so forth worked. Then we learned Java. Then we learned about data structures, and the relationship between data structures and algorithms.

If you just want to learn a little Perl to write some simple scripts, you don't need to do all of this. It sounds like you want to have a deeper understanding of programming though. So this is necessary. I think it is best done at a college, although theoretically someone can learn much of this on their own.

I think the idea of learning programming by "I want to learn one language well" is an amateur mistake. Our learning initially was almost purely mathematical. If you read volume I of "The Art of Computer Programming", he doesn't get into (M)MIX programming until pretty far into the book, the beginning is math. The cursory learning of a programming language was just a byway to then teach us about recursion, backtracking and the like. We immediately moved onto Java instead of going deeper into C++, to see that there were different ways of doing programming by different languages. We later learned radically different languages using different paradigms like logical programming (Prolog), functional programming (Lisp) on top of the object-oriented programming (C++, Java) languages we had already learned.

Eric Raymond once said "Lisp is worth learning for the profound enlightenment experience you will have when you finally get it; that experience will make you a better programmer for the rest of your days, even if you never actually use Lisp itself a lot." Other experienced programmers have agreed with this sentiment. As you said you're still an amateur, it's probably beyond your capacity right now to understand why someone should "waste time" learning a language like Scheme Lisp which they might end up never using. An ounce of prevention is worth a pound of cure though. The opinion of most expert programmers is that understanding the core ideas of computer science and programming is more important than domain expertise in a particular language. You say "I'll be setting aside an hour every day to devote to learning a new language, in the eventual hope that I can leave this company (take a sabbatical) and hop into the private sector for a few years." You should ask yourself if this is enough. Yes, knowing at least one commonly used programming language is important to get a job as a programmer. You will never really understand that language, and its limitations and advantages, until you learn some other languages, and some of the general concepts behind all programming and computer science. You said you were a novice programmer, and I think putting too much emphasis on learning one language well is an amateur mistake. There's a lot of steps you should be doing before deciding to become an expert in one language.

I'll give a personal example. I do a lot of Android (Java-like) programming. I also need a web API for some of the programs. A server-side Java solution is just too expensive for what I'm doing - sites like Bluehost and Dreamhost don't really support Tomcat and the like for $9 a month. So I use other languages for my web API than Java. Do a Google, or more importantly, a Craigslist job search for "full stack" programmer. Some companies are looking for people who can understand their whole business. They might have a web (HTML, Javascript, PHP), iOS (Objective C) and Android (Java) interface into their API, which hooks up to an application server which could be running Oracle Tuxedo or something like that. You might be concentrating on one portion of it, but having some knowledge of the full stack can be helpful, even necessary.

One point others have not made much is this: if you are in IT and can skip college, yes, you can be a good help desk employee. You might be a good database/systems/network administrator. You can even code Javascript or PHP to start putting together a simple website. You are not going to be able to program the type of advanced, complex systems that someone with a BSCS (or Masters, or Doctorate) can though. The only way to do that is to have a foundation of discrete and continuous mathematics, an understanding of statistics, graph theory, computability and computational complexity and so forth. An understanding of how algorithms and data structures interact. How mutual exclusion works. Of how things are fed to the ALU, of how floating point numbers are stored.

If you're going to spend the hours and days and weeks and months and years it takes to study these things, you might as well hook up with a CS program of a decent school, a public school if money is an issue, and learn it there. Most professors know their subjects well (although ones who know their subject well and are great communicators and teachers are rarer). Your classmates are often doing interesting things. Some people say you can study these things outside of college, but why not just go to a public college for 90 minutes, two nights (or on the weekend) a week and get a diploma cheaply? Also, I've never met anyone who has not gone to college, who has learned calculus by themselves, and then studied how limits work for big-O algorithm notation by themselves. They may be out there, but I have not met them.

One of the big problems for people without any college is that they don't know what they don't know. Solutions which will be obvious to someone who has studied computer science over four years (or more) will never even occur to someone who has been putting Javascript together. I tried to write a program in C many years ago which needed threading, mutual exclusion and so forth when I had only the vaguest idea of what those things were. It was a complete mess. Nor did I know it would be a mess when I tried to put it together without understanding mutual exclusion. Which reminds me of an interview question I got wrong many years ago - what is the difference between a process and a thread? I knew a process was more "robust" but could not explain why. And so on. It may be true that school is not the right thing at the right time for someone at some point in their life, but it should be considered in a rational fashion.

Ri-li is a game very young children might enjoy. It has a toy train running around the track, and there's not much to do - just click the button to switch the train tracks if you think it might crash. It has lots of motion and train noises, and is simple. I have heard from more than one parent that their child really enjoys playing it.

I wrote (forked, really) a book reader for Android earlier this year which has had over one million downloads since then. So I am obviously Android biased, but I also have looked into the field somewhat.

The main question is, why would you want to get something other than an Android tablet (or "phablet") as a reader? The main reason would be electronic paper - usually using eInk technology, like those Kindle's with eInk technology have. The Amazon Nook also has eInk, and other companies put out electronic paper products as well - Sony, Kobo etc. It is supposed to be easier to read, easier on the eyes, readable in bright sunlight etc. You can go to a store and try it out. Other people have commented about this technology, I have tried it but not on a regular basis. I don't know of any Android e-Ink products unfortunately, although the Microsoft/B&N Nook is a fork of Android.

Then there are Android tablets and phablets. One thing about them is you can choose different book readers - you can choose my book reader, or Google Play books, or the Kindle Android app, or the Kobo Android app, or apps like Aldiko, Moon Reader, Cool Reader, or the open source app I forked from - FBReader. Google Play is getting big on selling regular books like Harry Potter or Suzanne Collins or the like. You can buy them from apps like Kindle Android as well.

Then there's plenty of free apps with free books. My app is free and has free ePub format books in different languages - English, Spanish, German, Dutch, Portuguese, French and Spanish. I will probably be adding more languages in the coming months. All of my ePub books which are free are in the public domain. Most, if not all, of them were published before 1923 and are thus public domain - Mark Twain, H.G. Wells and the like are popular English language books.

Plus, you can use your Android tablet/phablet for things other than book reading. You can buy a 7 inch Google Nexus 7 tablet, which people love. I have a Samsung Tab 10.1 which is 10 inches which I have been happy with. Try them out in a store, see how big they are and how much they weigh. If you are on a sofa or bed reading, how heavy will the tablet be on your stomach? The Samsung Tab 10.1 is 1.25 pounds, which is about the weight of a 500 page hardcover book. Since the weight is more evenly distributed, and not concentrated in the center like a book, it feels even lighter. But there are smaller and lighter tablets/phablets out there as well.

Slashdot has always been a fan of free software, and in terms of my app, it works out well in all directions. I have contributed back to my fork upstream, in the form of things like language translations. My app is on an open source framework - Android. While the app handles more than one book format, it concentrates on the book format which is the standard open one - ePub. My app primarily traffics in public domain, pre-1923 books in a variety of languages, so the content is free-as-in-beer/free-as-in-speech. The app made me over $430 in ad revenue last month. The ads are non-intrusive - originally I had ads over books while you were reading, but when testing it I found it annoying and distracting, so I put up ads before a book opened and hoped that I would still make money even though the ads were not as visible all the time, and it has worked out. Over time I will continue expanding languages, and sending those to my code upstream, FBReaderJ, and perhaps make other improvements and send those upstream as well. It is a free software ecosystem where the benefits flow back and forth in all directions and that has worked out for everyone.

I'm hyping my own projects here, but over the past weeks I've been porting free software games over to Android. Specifically, games that use the Simple DirectMedia Layer (SDL) library. Most of the games are written in C++, and the OpenGL (OpenGL ES in the case of Android) functionality is handled via the SDL library. I have had a good response so far for some of the games.

I have the games as different branches from my tree on Github. My tree is a fork of Sergii "Pelya" Pylypenko's port of SDL 1.2 to Android. One branch is a (partial) port of the popular educational game Tux Math. Another branch is of the game Circus Linux, which I felt did not translate well to Android (at least as I did it) so I never published it to Google Play. I should be putting a few more branches up on Github soon - ports of Ri-li, Hex-a-hop, Ice Breaker and so forth. The Ri-li source will probably be the next one that I will put up.

You say: "I find it a painful process to go back to an Android or iPhone for some obscure app not yet supported on WP."

The apps which already have Android and/or iOS support, which you also want WP support for, may be obscure in terms of the ones you as a person are particularly looking for. However, there are a whole host of non-obscure apps supported on Android and iOS, which are not supported for Windows Phone yet.

Dropbox is an app whose whole point is to be cross-platform. That they don't think WP is worthy of a port yet is a sign.

There's a Nook app for iOS and Android but not yet for Windows Phone, although I'm sure the $300 million deal Microsoft made with Barnes and Noble six weeks ago will change that. At the moment, Lumia owners are still out of luck due to the deal. It just goes to show that popular apps are not written overnight.

Is there a database app that can handle Microsoft Access files on Windows Phone? AFAIK, there is not. There is one for iPhone and Android. I should know, I wrote the one for Android. If you want to search through a Microsoft Access database file on a mobile phone - with Microsoft Access being included in most of the Microsoft Office suites I've found at large companies and universities - you have to buy an Android or iPhone.

All of these are all popular apps on iPhone and Android which are not on Windows Phone. Then there apps which have been ported to Windows Phone, but which reviewers say are much worse than their iPhone and Android versions. Rdio is one example, according to Techcrunch and Gizmodo reviewers - they love the Android and iPhone version, but think the WP port is sub-par.

The Lumia 900, #7, was released last month in the US. The Galaxy S II Epic 4G Touch, #4, was released in September of last year.

The Lumia 900 is more than six months newer than the Galaxy S II Epic 4G Touch which, with the rate smartphone innovation is going, is half a lifetime. Yet that older S2 release with its older specs is beating the 900. What is going to happen to the 900 when phones like the Samsung Galaxy S III become available? The S3 is going to become available in Europe at the end of this month, and will soon be available in the US as well.