Hello, I'm Sig.  I develop cool things.

Build an iOS and Android app in 5 minutes, without an IDE

Ok, a lofty goal, but a goal nonetheless. 

Lets setup, build, and deploy an iOS and an Android app [yes, that was an 'and', not an 'or'] in 5 minutes flat.   

A couple of preconditions... you must have administrator rights to your computer, be running OSX, and you must be willing to accept that the app is going to be... basic.  By basic, I'll concede it's just a picture, but a pretty picture, at that.  Regarding the OSX bit, you can definitely do this on iOS or *nix, but that will take an extra 5-50 minutes to setup, no guarantees on 5 minutes or less.

How exactly are we going to build this app, in such a short timeframe?  Don't we have to install xcode, the Android SDK, emulators, simulators, and the kitchen sink to do that?  Nope, not today!  We are going to [you likely guessed it] use Cordova [err, PhoneGap, err... Cordova? which is it...?] to do this.  We also have to have NodeJS on our development machine, and something called "ripple".

The sole reason for this post is to remind me of how to do this, because I have the memory of a toothpick.  If you find it helpful, great! That means I've pleased someone on the Interwebz.

Ready to do this?  Find your clock and make a mental note of the time, cause we start now!

  1. Install NodeJS by going to http://nodejs.org, click the big green install button and open the resulting file. Bam.
  2. Open Terminal [in /Applications/Utilities/Terminal] and execute commands 3 thru 6 by typing the text in bold.
  3. sudo npm install -g phonegap 
  4. sudo npm install -g ripple-emulator
  5. Navigate to a directory you'd like to store your app, for instance, type cd ~/Documents
  6. Create a new phonegap app by running the following [change com.sigmyers to whatever reverse domain name you'd like]: phonegap create demo com.sigmyers.demo Demo     
  7. Navigate into the "www" directory of your app: cd demo/www 
  8. start ripple by running: ripple emulate
  9. Pop open your favorite browser and for the domain name enter: http://localhost:4400/?enableripple=true 

Stop the clock! Stop the clock! [You didn't even start a clock... did you?] 

Voila!  You didn't think you'd get through that unscathed, right?  Lets recap exactly what we did here...  We used PhoneGap and Ripple to launch a default application into an iOS and Android "app" that is running via the browser.  Any browser can run this [provided it's not some really old browser], and more importantly, any one can get this running relatively quickly.   It took me a bit of reading which is why I wrote this demo... I didn't understand what exactly I was playing with, but now that I'm up and running it's a matter of popping open an IDE [ergh, I mean vim... or vi... or emacs if you're crazy], grabbing some HTML, CSS, and JavaScript and getting cozy.  More posts of this flavor to come!

 

Postgres pg_dump version mismatch error [Postgres.app / postgresapp.com]

After a bit of confusion, I realized that after running Postgres.app [postgresapp.com] for a local PostgreSQL instance on OSX, that I was no longer able to run pg_dump for creating a local backup of my database.

The error I was running into was something like:

pg_dump: server version: 9.2.1; pg_dump version: 9.1.6 
pg_dump: aborting because of server version mismatch

To fix this error, I had to edit my local bash profile (pico ~/.bash_profile) and add the following entries:

export PG_DUMP="/Applications/Postgres.app/Contents/MacOS/bin/"
PATH=$PG_DUMP:$PATH

The only change you may have to do is fix the path to your Postgres.app installation if you installed it to some place other than your /Applications folder.

Hope this helps someone else running into errors trying to utilize pg_dump or other postgres utilities!

Java and the "final" keyword for methods, classes and fields

I was reading some legacy code that had the keyword final sprinkled throughout.  I've always thought that the final keyword was ultimately for saying something like "the buck stops here."  That particular keyword is more for announcing to any future readers and utilizers of your code that there is some intent the original programmer had as to why you don't want to (or should not) extend from this class / method.

While reading some of the legacy code in question, I was spotting the final keyword used in private methods.  Now what in the blazes would a final keyword need to do inside of a private method, you ask?  After a bit of searching the web, I found that optimization is the reason people *think* you should use the final keyword a variety of places.  This is incorrect.  Many blog posts seem to think that the compiler will "inline" methods / classes that have the final keyword sprinkled on them, but this is not the case per this IBM article (http://www.ibm.com/developerworks/java/library/j-jtp1029/index.html) that was referenced in this blog post (http://kirk.blog-city.com/declaring_methods_final_improves_performance_not.htm).

After further thought, I considered that there are a few particular cases that I use with the final keyword.  They are my best practices, as to whether or not they are industry best practices... I'll leave that to the commenters to decide (or decry).

The final keyword should be used to describe a specific intent.  The intent is to say to other programmers who come across your code something along the lines of "hey, new guy/girl... I had a reason for making this method/class/variable final."  Then, the programmer in question reading your code will logically say something like "why?".  This is where the the comments (javadoc, baby!) comes into play.  If a programmer is willing to write a final method or class in particular, there should be some trail of breadcrumbs that future programmers can follow to help them know what the original intent of that design decision was so that whoever is maintaining/modifying the code can make an informed decision as to whether or not removing that little five character word is a good idea or not.

</endRant>

Migrating MVC 4 app from .NET 4 to .NET 4.5 in Visual Studio 2012

Rumor has it that Windows Azure is going to support the .NET 4.5 runtime in the next couple of days (currently it's only available for websites): http://weblogs.asp.net/scottgu/archive/2012/10/25/net-4-5-now-supported-with-windows-azure-web-sites.aspx

As such, it seems worthwhile to write a crash-course for successfully migrating your .NET 4.0 app to .NET 4.5 (in Visual Studio 2012). 

Before we get too far ahead, you may ask yourself "why upgrade at all."  I'd argue that the persistent enum support and further hardening / performance improvements in EF 5.0 are about all that has to happen to make things worthwhile.

Microsoft provided the barest of bare-bones documentation about how to migrate an app to the latest framework (http://msdn.microsoft.com/en-us/library/ff657133.aspx), and since it took me a weekend of tinkering to get things working, I figured someone else may benefit from the head scratching (banging) I went through to get things up and running.

The Windows Azure emulator doesn't currently let you develop locally with .NET 4.5 (haven't figured out how to get this working yet), but you can still debug and get your app running locally without the the Azure emulator.  That is what this guide should help provide.

Without further adieu...

Step 1 - Update your Target Framework

To update your target framework, open Visual Studio (but do NOT open your project).  We need to edit the Target Framework attribute in *.csproj files.  Visual Studio locks those files down while in use, so it's moot to try and edit while your project is open.

Transient

Click the Edit toolbar -> Find and Replace -> Find in Files and search for targetFramework for any file matching *.csproj file.

You will see a number of files appear and you'll want to click into every single TargetFramework xml tag's value from v4.0 to v4.5

Step 2 - Re-Install your NuGet packages

This is a bit more painful, but you'll survive.  I manually uninstalled and re-installed every NuGet package starting with my Unit Test projects on down to my MVC app and model projects within my solution.  I made a backup of my packages.config file for reference (located in solution_root_folder/project_folder/packages.config).  This IS painful, but keeping a backup of the packages.config file for reference and doing some web searches to figure out what package goes where will be the way to go.  

After uninstalling all your packages, go ahead and re-install one by one starting with your lowest level (e.g. closest code to the database) first.  It's not fun, but this is the safest way to make sure you get all of your dependencies back up and running.  When you get back to the point of a clean build working successfully, breath a sigh of relief, take a walk outside, etc.  If you don't have MVC's membership in play (or are using home-rolled/custom membership providers), you should be able to deploy your MVC 4 app without issue.  But if you are using ASP.NET SImpleMembership or aspnet_Membership (circa .NET 2.0), read on...

Step 3 - Fix your membership settings / connection strings

When I re-insalled all my NuGet packages, I had a successful deploy until I logged into my app, at which point I got weird errors.  I like to name my connection strings after my app name.  By doing this and not overriding the LocalSQLServer connection string (which was previously never mentioned in code / web.config files anywhere in my solution), much pain was endured.

First and foremost, add a </clear> tag to the start of your <connectionStrings> tag in your web.config file.  Next, add a new connection string (a duplicate of your existing one) and call is "LocalSQLServer".   My connectionStrings element now has three children:

  • </clear>
  • <add name="LocalSQLServer" ...
  • <add name="MyGreatAppConnectionStringName" ...
This fixed the below error message from occuring again:
 A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

SQLExpress database file auto-creation error:

The connection string specifies a local Sql Server Express instance using a database location within the application's App_Data directory. The provider attempted to automatically create the application services database because the provider determined that the database does not exist. The following configuration requirements are necessary to successfully check for existence of the application services database and automatically create the application services database:

If the application is running on either Windows 7 or Windows Server 2008R2, special configuration steps are necessary to enable automatic creation of the provider database. Additional information is available at: http://go.microsoft.com/fwlink/?LinkId=160102. If the application's App_Data directory does not already exist, the web server account must have read and write access to the application's directory. This is necessary because the web server account will automatically create the App_Data directory if it does not already exist.
If the application's App_Data directory already exists, the web server account only requires read and write access to the application's App_Data directory. This is necessary because the web server account will attempt to verify that the Sql Server Express database already exists within the application's App_Data directory. Revoking read access on the App_Data directory from the web server account will prevent the provider from correctly determining if the Sql Server Express database already exists. This will cause an error when the provider attempts to create a duplicate of an already existing database. Write access is required because the web server account's credentials are used when creating the new database.
Sql Server Express must be installed on the machine.
The process identity for the web server account must have a local user profile. See the readme document for details on how to create a local user profile for both machine and domain accounts.

You're probably thinking you're out of the woods now, right?  Sadly, I ran into my next series of errors thinking along the same lines.

Step 4 - More NuGet Package Installations!!!

After fixing up my web.config file, I had an error popping up that looked eerily like the previous version of ASP.NET Membership, but since I was using the latest and greatest membership providers, this had me a bit confused.  The error I was receiving is below:

Could not find stored procedure 'dbo.aspnet_CheckSchemaVersion'. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.SqlClient.SqlException: Could not find stored procedure 'dbo.aspnet_CheckSchemaVersion'.

I had to install to my MVC 4 project another NuGet package:

Install-Package System.Web.Providers

This duplicated a number of lines in web.config file and I had to remove the original and use the newly-added provider tags replacing the connectionStringName attribute with my connect strings name.  The providers I had duplicated entries for after installing the System.Web.Providers package were:

  • DefaultProfileProvider
  • DefaultMembershipProvider
  • DefaultRoleProvider

Okie dokie, that should get you out of the woods and back to coding.  Yes, it was painful, but hopefully this helps someone else out on the interwebs figure out all the configurations necessary to upgrade an app to the latest .NET 4.5 framework!

Minifying Life + Backups

Ya know, I was looking around today and starting to realize the fruits of some of my labours over the past couple of months.

If there were to be some disaster today, and I only had a few moments to grab my valueables, I would be very confident that all I need to do is grab my dog and maybe (big maybe) something like my wallet or cell phone.  I’ve been removing clutter of late and been trying to continually get down to the “bare essentials.”

So what does that actually mean?  More peace of mind than one might realize.

Many people dread losing items that have sentimental or intrinsic value — for me that would consist of pictures, gifts from family/friends, and items I tend to cary on my person or that otherwise identify myself (drivers license, credit card, phone, passport, birth certificate, etc).  The entire goal of planning for the worst is something of an optimization problem (there’s likely a mathematical proof or equation floating around for this already—if so, go read that). 

In this day and age, we have things like “cloud computing” that consumers can now take advantage of.  Being a person who loves the subscription economy we’ve dived into as consumers (more on this in another post), I’m totally biased to solutions that might cost a small dime, but provide great value over the course of their service.

The simplest solution to ensure that, given the worst disaster where your house burns down and you lose everything you own, how do you recover priceless memorabilia or family herlooms or photos/family videos?  The answer is: digitize that, damnit (DTD).  In using DTD, you can quickly realize just how little you may lose in the worst of events.  Further, it’s always worth noting the services you can utilize to ensure that should you lose everything you own, there’s a path to getting those items back.

Backing up your content online is the easiest means of ensuring data loss prevention in the long run.  Things you might be interested in scanning and storing would be items like a birth certificate, social security card, drivers license, passport.  DTD and then throw those items on a backup. 

Family photos and such are priceless.  Once they burn or get soaked, you’ll never be able to restore them to what they were.  Accidents happen more ofte then not, and it’s best to store and organize those images.  What to do?  DTD and then throw those items on a backup.

Aunt Nelda’s pearls or Uncle Ed’s gun collection will be a tough go to replace.  I’m leaving you, dear reader, to figure out how best to protect those valueables.  If you leave them on display because they give you pleasure, it’s naturally a risk for theft/disaster.  If you lock something away in a fireproof cabinet of sorts, then it kind of defeats the purpose of enjoying those artifacts.  Nonetheless, whatever you decide to do, know that your dear old pictures of Aunt Nelda and Uncle Ed will be meticulously maintained.

Once you have your backups, the most critical (and by most critical I mean *the* most critical) step is get those backups onto the cloud.  Backup everything.  It’s cheap, it’s easy, and works for you.  Where do you go to find a backup service?  Try googling Carbonite or something along those lines.  After you’ve got that running, be sure to back up all of your documents, photos, and files on your computer(s) as well. 

Assuming you’ve got an interest in doing the above steps, what did you get?  For about $15 a month you likely have a new backup service, you’ve digitized your entire photo collection, identification documents, and any other personal documents of interest, and guess what?  That wasn’t so bad.  Fifteen dolllars a month (depending on the service you use) is relatively cheap, and buys you a good bit of peace of mind.  That’s one small step on the way to a much less worrisome scenario should the worst happen.

Another item that you should consider heavily (assuming you’re a renter) is renters insurance.  This is on the order of $20/month depending on where you live, but it reimburses you for physical items that you’d be likely to replace in the event of a disaster.  This one’s kind of obvious, and homeowners insurance can serve a relatively similar purpose here as well.

So what about the rest of your stuff?  How can you minimize risk when it comes to other items you own?  Aside from replacement, there are plenty of other options available.  I used to have a (very) large collection of books and movies.  I amazon-ed/ebay-ed all those suckers and am getting digital copies as I go.  Magazine subscriptions are moving that way as well.  I bought my first digital edition of .Net magazine recently, and am looking forward to cancelling all my physical copies and just going with the digital version in the near future for all magazines.

Music is another area that is very hard to part ways with.  Certain records have a good bit of sentimental value when listening to them.  I’ve kept a handful of my favorites, but the rest of em’ I sold online as well.  With subscription services like Spotify, Pandora and Amazon’s cloud player, I’m a pretty happy camper having everything in digital format.

Services are again starting to creep into the discussion of this post.  Overall, I’d guess that for well under $100 / month I have relatively easily replaced most all of my CD’s, DVD’s, books and now backup as many items as I can think of to the cloud without issue.  Next up?  I’m selling a bunch of extra computer components, furniture and other trinkets lying around to get ever closer to my goal of owning only 100 things.  I’m not far off now… not far off at all.

Some Cool Coding Tips

I was doing some nighttime programming for fun, and came across a bit of code I had to look up (i.e. search on the web).  In C#, I was familiar with ternary operators.  I love using them when appropriate.  It turns 3 ~ 5 lines of code into one pretty, simple statement.

When I came across a coalescing operator, my head exploded (ok, that may be a bit over-the-top…).

Coalescing operators have a fantastic usage (particularly in C#) with nullable objects.

Example time!

Lets say we’re posting data to a form.  The form contains a name (which is an optional field) and birth year (another nullable field).

Assuming we have a “Person” object, that takes a string and integer for a birthdate, we could code that up as follows to handle the null-case of those objects being passed in.

 

public void doThis(String? name, int? birthyear)

{

Person p =  new Person();

  // option #1 - if statements

  if(name!=null)

p.name=name;

  else 

        p.name = “Bob”;

  if(birthyear != null)

        p.birthyear = birthyear;

  else 

        p.birthyear = 1902;

  // option #2 — ternary operators

  p.name = name!=null ? name : “Bob”;

  p.birthyear = birthyear != null ? birthyear : 1902;

 

  //option #3 — coalescing operator

  p.name = name ?? “Bob”;

  p.birthyear = birthyear ?? 1902;

}

 

How about that for a super quick example? I’m not sure how useful this is, but it seemed like a cool little tidbit of information to come across that I was previously unaware of.  Maybe it’s time I start reading up on the changes between C# 3.0, 3.5 and 4.0.   If I start doing that, I’ll need to look in the differences between Java 6 and 7 (I have 5 and 6 down pretty well), and don’t get me started on PHP 4 and 5…

Ah well, that’s all.  Hope someone on the interwebs finds this useful!

$100 in 100 days. Making Money on Android.

This is the first in what I hope to be a series of three blog posts discussing monetization on Android.  I recently attended O’Reilly’s Android Open Conference held here in downtown San Francisco.  It was a great event with plenty of fantastic speakers.  One speaker presented 50 business models in 20 minutes.  While the talk was great, I thought I’d try and bring about a slightly different focus on app developers monetizing their hobby apps.

I’ve been curious about making money on the Android marketplace for a while, and have read a few other blogs and articles about such information.  I’m inclined to start fresh.

The question I’m setting out to answer is: what does it take to make $100 by making an Android application.  I plan to launch three different types of applications.  Each of these applications will be in a distinct category within the marketplace.  Each app will also be infused with as much analytical information as I can possibly gather.

The soul purpose of the analytics is so that I can share some pretty charts and graphs about what my apps users are doing.  What types of users respond to advertisements, what types of users are willing to pay an up-front fee for apps, and what in-app purchase mechanisms work well for an audience, etc.

If this were a scientific test, I would do three different apps in three different categories and do a comparison based on that information.  Due to the fact I’m only composed of two hands and one brain currently, I’ll be a little bit more limited than a team of developers looking to answer my rather basic questions (for only $100, too). 

My hypothesis is that in-app purchases will be more difficult (i.e. not as fruitful) on the Android Marketplace than the Amazon Marketplace.  Further, I  think advertisments inside of apps will be almost useless in terms of monetization.  Lastly, I think the freemium / premium app versions will be the best bet.  Give a user a decent ad-enabled free app, and remind them that they would really like to drop a buck or two for the ad-free version at a later date.

I started some small development on these apps this weekend, and after I get some UI help from a friend, will launch them with Google and Flurry Analytics.  From there, I’ll wrap the apps up, launch them in the marketplace, and report back accordingly.

Moving from paperback to eBooks... Is this the future?

I’ve recently decided that I wanted to minify my life, much like one might minify javascript on a webpage (really bad example, but they both use the word minify which works out well).  I got the idea from the “100 things challenge”.

My parents consider me to be a minimalist already, but that’s part of what comes with living in a city.  People in cities tend to be more conscious about the space they live in because the dollar per square foot ratio is a bit higher than rural areas. The question I started to approach was how do I run a minify operation on my life, such that I can really understand what a functional person needs in order to be satisfied in the technology age.  My motiviations are purely economical.  It’s not that I’m looking to save money by selling or donating a ton of junk, rather I’m trying to see a business model that might be interesting to a recent college grad with his or her first apartment and job after leaving school.

I’ve noticed advertisements to rent a neighbors call for a few hours which directly competes with the City Car Share and Zip-Car services in the bay area.  Spotify launched in the U.S. and I’ve noticed facebook friends who I don’t view as nerdy/geeky to be using subscription-based streaming music services to get their music fix (e.g. Rhapdsody, Spotify, Rdio, etc.).  I also took a class in grad school in understanding technology and the services industry a good while back and have found the subject to be a bit fascinating.  I think the world is moving from product to services, and technology will be a major player in that movement.

What does this have to do with moving from paperback books to eBooks?

This is a step that I think the next generation won’t be making.  The future won’t have people moving from paperback to eBooks, they’ll already be using tablets to buy, rent or checkout books, magazines, and newspapers.  The concept of buying a physical book is going to foreign to many kids in the very near future.

I’m willing to bet that the government will take a look at public education in the near future and realize it’s cheaper to get kids new textbooks by giving them a tablet and sending them an eBook version rather than buying, shipping and re-using (outdated) textbooks year after year.  These kids will be looking at the economy in a vastly different way than the likes of anyone not having experienced this.  This group of individuals will look at the world wanting to understand what method is easiest to consume the content they’re looking to utilize.  Before this generation of kids, we decided we liked a particular magazine and bought a subscription which was delivered to our door every month.  This group of individuals may buy a service which allows them to look at the last 50 issues of any one of their favorite magazines and new ones as they come out on a digitial device.  That’s a good bit different from the way we do things now.

I am a massive fan of the subscription economy, which I plan to blog a whole lot about in the very near future, and think that’s the way our entire society will move towards.  It will be a massive shift in focus from a product / ownership-based economy in the short future.

As I started looking through my collection of books, I realized that some I’d read and kept on a bookshelf with no intention to read them again.  Others were textbooks from my undergrad or grad work that are very specific in nature and likely nothing I’d need that I wouldn’t be willing to buy again should I need a copy in the future (assuming a digital copy wouldn’t be available at that point in time).  A small set of books I realized I couldn’t part with.  These are books that an author had signed or had some special significance to myself.  The last set of books were mostly technical reference books that had an e-book version I could replace it with.

To help get the ball rolling, I shipped all the books to Amazon (including a few DVD’s and Blu-Ray’s I didn’t have a need to watch anymore).  The “Fullfillment by Amazon” feature is fantastic.  Ship your books to them, set a price, they notify you when something sells.  That way, the books are immediately removed from my life, and I get some money from month to month as they sell.  Granted, Amazon takes a bigger chunk out of the profits in this scenario than if you were to sell it yourself on Amazon or trade it in to a bookstore.  I found this to be the easiest method for me.

Step two was to order a kindle (I opted for a Kindle Fire, but think I may get an e-ink version as well).  When my Kindle Fire arrives, I’ll be purchasing replacements of a few books I know I’ll need (as many raw PDF copies as possible for backups and portability to other devices) and only buying new eBooks through early March 2012. 

I believe this will be enough time to evaluate what life is like when getting rid of most of my technical books and opting for electronic copies.  Part of this results in me getting rid of my bookcase/desk which became a storage haven for most all books, and cleaning out a few dust-balls collected behind those pieces of furniture.

I’ll let you know how it goes in a few weeks when my Kindle device arrives!

Updated website + more blogs

I’ve cleaned up my act.  It’s time that I regularly blogged about everything going on in the (technology) world that I care can gripe about.

I hope you enjoy my new site!  I plan to post multiple times a week on Android and iOS development, other Joomla projects I’m still working on, and how to take over the world (in 6 ~ 10 steps).

My resume is horribly out of date, but no matter! I pledge to update that within the next decade as well (it’s a bit farther down on my to-do list).

With a little luck, some of the stuff I blog about my be of interest to the other software engineers floating around the world.  I’m totally pumped to be attending O’Reilly’s Android Open 2011 conference.  Hopefully I’ll get to learn a heck of a lot that I didn’t over the three days.  A couple of my coworkers at SendMe are going as well, so it should be a pretty fun affair for us to see what the rest of the android mobile app world is doing.  At least those that have decided to trek to San Francisco.

Aside from that, I plan to post some new music recordings here and there on the site as I find time, and also post pictures of my adorable little nephews as I get new pictures in.  In addition I get some pretty nice photos from my other sister in Beijing, China (which I’m planning to visit early next year), which I plan to post as I get them as well.

My new years resolution was to blog more.  This marks the first blog post I’ve done in 2011.  As unimpressive as it seems, we’ll see if I can keep up to my goal and accomplish that little resolution I made such a long time ago (in a galaxy far, far away…).

Selling Smartphones

One of the biggest problems (in my opinion) with cell-phone carriers these days is the inability to really try a cell-phone before you purchase.  When a customer walks into Best Buy, they are expecting to touch, look at and play with the devices inside the store.  Best Buy stores (and other similar retailers) generally have a section of technology products that a customer can demo—be it a laptop, desktop or other techno-widget-device, however when it comes to cell phones everybody is lacking it seems.

When a customer wants to consider purchasing a product, the easiest way many sales veterans might advise would be to get the product into the customers hands.  At stores like Best Buy, Costco, and many cell phone retailers this is where they go insanely wrong.  They get a “model” of the product into the customers hands.  It’s a plastic rip-off without any functionality.  In the age of touch-screen-enabled devices and the mobile-app economy, the former ideology of placing a cheap plastic prototype on display for customers to see is a bit absurd.  How many people would actually walk in and say “Man, this plastic container fits my hand perfectly, so the phone’s operating system, applications, screen, etc., must all be great in the real thing.”  Nobody.

I’d propose fixing this problem by having the likes of LG, Samsung, Apple, Palm (HP) and all the other carriers get a device to put on display that actually works.  Maybe lock it down or disallow the addition of apps in the various models, but the days of a plastic model being the means for making a decision on a new cell phone are long gone.  With increased projections for cell-phone sales this year, it might be time to put some actual sales tactics to use for some of these stores.

The W3C

I’ve been reading article after article, and listening to podcast after podcast about how the World Wide Web Consortium’s CSS and XHTML standards are basically moot in the ongoing browser wars between IE, and Firefox, and Opera, and Safari, and …

I thought I’d throw in my two cents. I think standards are fantastic, and love coding to them, when I get the chance. Of course, I’m not claiming complete compliance, but lets face it—there are standards for a reason. We hope that someday every browser abides by the standards so that we can stop coding two or three additional CSS files just to get the look and feel down across all the browsers.

I’m not sure why it is that it’s so hard for all these groups to conform to a standard, sorry—THE standard. It seems like it will be an ongoing battle and everyone is merely in the midst of rooting for their favorite player.

Who knows, maybe next week Microsoft will release a patch that standardizes everything. That would single-handedly save out-of-employment programmers. How, you ask? Lets see, everyone starts upgrading, those that upgrade will realize that their websites are all goofy now. What are they gonna do? They’re gonna hire a consultant to fix all the goofy little problems. You know what—that’s a LOT of problems that need-a-fixin’. Okay, I’ll admit, it probably wouldn’t be THAT big a deal, but who knows, maybe it would generate some business for all of us pawns in the web and software worlds who are looking to climb up the chain.

Or maybe we should look for a different rope to climb up. Ah well, who knows.


I’ll first mention why I do not care for Comcast’s HD-DVR. I don’t like monthly bills—and when a monthly bill is absolutely necessary, I want it to be as low a fixed cost as possible. I pay $40/month for internet via Comcast, which is quite speedy, and when I had the HD-DVR, that cost went to $90.00 for the first six months. Six months later, I saw my bill jump to $120.00, and being a person that doesn’t watch a massive amount of TV, I called and cancelled. The actual DVR lacked many capabilities, and was annoyingly complex. I was paying for HD-service and DVR capabilities, yet when searching for programs 1/2 the screen is taken up with the Comcast logo and new movies available for purchase. I’d prefer to see a full-page listing of as many channels and programs as possible, but the capability to remove advertising is nonexistent. Further, I don’t want to manually delete every show just to free up space on my box. I’m slow at watching programs, and 2 weeks is often not enough time to get me caught up on my shows, and so I get far behind on my DVR. It fills up, and in order to free up space, I have to go through and punch delete (a 3-step, slow process) on every show I decide I can do without seeing.

TiVo HD and Series-2 DVR’s have the same user interface, but their hardware specs differ. One can do HD, the other cannot. One has tons of storage space, the other has 80 gigabytes (which is still alot!). One costs $300.00, the other you can snag used for $30-40 bucks on eBay. After toying with the HD version, I decided on the HD box because of my interest in watching HD content.  There is one caveat with my choice—I had to get a cable card from my local cable company.  When I inquired about the little cards, I had some interesting responses from Comcast—I told them it was going into a TiVo, and that I wanted the “M-Series” card (M-Series = Multi Stream, I believe).  An “M-Series” card allows a user to watch one channel and record another at the same time.  The “S-Series” cards (or Single-Stream) only allow for one channel at a time.  The difficult part of this situation was that, in requesting the “M-Series” card, the phone support tech at Comcast was convinced that I’d have to pay to have a tech come out and do an “advanced install.”  I asked if I could just pick up the card and put it in myself (it really can’t be that hard, can it?), and was told that it was out of the question.  I caved and paid the one-time set-up fee for the tech to come out.

When the Comcast technician arrived, he had an M-series card in hand, popped it into the back of the TiVo, made a phone call to send an “Init” request to the mothership, and left.  I know what you’re thinking, and I blame Comcast (not the technician) for believing that I was too inept to plug in a card and make a phone call.  After reading the forums online, I found out that maybe it was best to have the technician come after all because there are users having great difficulties with CableCards in some cases.  Ah well, at least I got my HD service and TiVo up and running in under a week.

Well, there you have one more rant. Eventually I’ll find time to go back and proof read one of these, but that day is certainly not today.

Cable Company DVR vs. TiVo

I’ve got some positive news—my television picks up over-the-air content quite well, so I now have about 25 channels (everything from G4, HGTV and Animal Planet to local programming). I was thinking it might be time to consider getting a TiVo DVR. Then I started thinking it might be worthwhile to compare the features of TiVo to that of Comcast’s DVR.

I believe in this day and age, everything should be about HCI—Human Computer Interaction. If you don’t have an awesome, clean, intuitive user-interface, your product and user-base will eventually disappear. I firmly believe that Comcast’s DVR’s, if they weren’t subsidized by the cost of cable, would all be headed to the landfills because no one would want to pay for such a clunky device (even though most people do, they just don’t notice it popping up on their cable bills).

I’ve played with three DVR devices: Comcast’s HD-DVR, TiVo’s Series 2-DVR, and TiVo’s HD-DVR. There are pros and cons to all of them, and it’s notable that all devices have dual-tuner capabilities, but one device has a warm spot in my heart…

I’ll first mention why I do not care for Comcast’s HD-DVR. I don’t like monthly bills—and when a monthly bill is absolutely necessary, I want it to be as low a fixed cost as possible. I pay $40/month for internet via Comcast, which is quite speedy, and when I had the HD-DVR, that cost went to $90.00 for the first six months. Six months later, I saw my bill jump to $120.00, and being a person that doesn’t watch a massive amount of TV, I called and cancelled. The actual DVR lacked many capabilities, and was annoyingly complex. I was paying for HD-service and DVR capabilities, yet when searching for programs 1/2 the screen is taken up with the Comcast logo and new movies available for purchase. I’d prefer to see a full-page listing of as many channels and programs as possible, but the capability to remove advertising is nonexistent. Further, I don’t want to manually delete every show just to free up space on my box. I’m slow at watching programs, and 2 weeks is often not enough time to get me caught up on my shows, and so I get far behind on my DVR. It fills up, and in order to free up space, I have to go through and punch delete (a 3-step, slow process) on every show I decide I can do without seeing.

TiVo HD and Series-2 DVR’s have the same user interface, but their hardware specs differ. One can do HD, the other cannot. One has tons of storage space, the other has 80 gigabytes (which is still alot!). One costs $300.00, the other you can snag used for $30-40 bucks on eBay. After toying with the HD version, I decided on the HD box because of my interest in watching HD content.  There is one caveat with my choice—I had to get a cable card from my local cable company.  When I inquired about the little cards, I had some interesting responses from Comcast—I told them it was going into a TiVo, and that I wanted the “M-Series” card (M-Series = Multi Stream, I believe).  An “M-Series” card allows a user to watch one channel and record another at the same time.  The “S-Series” cards (or Single-Stream) only allow for one channel at a time.  The difficult part of this situation was that, in requesting the “M-Series” card, the phone support tech at Comcast was convinced that I’d have to pay to have a tech come out and do an “advanced install.”  I asked if I could just pick up the card and put it in myself (it really can’t be that hard, can it?), and was told that it was out of the question.  I caved and paid the one-time set-up fee for the tech to come out.

When the Comcast technician arrived, he had an M-series card in hand, popped it into the back of the TiVo, made a phone call to send an “Init” request to the mothership, and left.  I know what you’re thinking, and I blame Comcast (not the technician) for believing that I was too inept to plug in a card and make a phone call.  After reading the forums online, I found out that maybe it was best to have the technician come after all because there are users having great difficulties with CableCards in some cases.  Ah well, at least I got my HD service and TiVo up and running in under a week.

Well, there you have one more rant. Eventually I’ll find time to go back and proof read one of these, but that day is certainly not today.

Cable Bills!

Yesterday I got a bit frustrated, yet again, with the massive cable bill from Comcast. I get my Internet and TV from them, and realized that I only really need one of their services—high-speed Internet. When looking at the numbers, I realized that I could get the fastest Internet package for around $60.00. The package I had yesterday included a slower connection (12Mbps) and digital cable. Not only is their remote control utterly annoying to use (the buttons have a slow response time, and there are just too many of em’!), but everything seems so clunky to me. I needed a cable box, remote, wires galore, cable modem, more wires, a router, and a few more wires. And I had to pay more money.

The problem I was running into was that only one outlet was of enough quality to support high-speed internet—the same one the digital cable box was plugged into. That creates quite a bit of congestion in terms of wires mixing around in the TV stand. When I realized I was spending $100/month on cable TV and Internet, more than all my other bills combined (yes! you read that correct!), I decided it was worth it to, yet again, live without the TV. I did this for about 3 months a year ago. The difference was, at that point in time, I didn’t have a TV, just a computer.

Here’s what I’m thinking, I’ll save approximately $40/month by cancelling cable and snagging the fasters Internet connection speed. That $40 will go to a long way—I can go to a movie once a week every month, get popcorn and a drink! Or, I suppose I could put that money towards my daily cup of coffee—that’s three weeks of coffee paid for! Maybe I could put it towards my savings account, or invest it in something cool. I could use the $40/month to get a Sprint MiFi plan and then have the internet with me everywhere I go. I’m not sure what exactely I’ll do with the spare change—granted it’s not a bunch, but $40 x 12 months = $480. If I go without cable for a year, I can buy myself a pretty awesome gizmo next summer.

So, you may be thinking, what are you actually gonna do with the money??? I’ve decided my time is more well-spent reading. But I tend to go crosseyed if I read for a long amount of time, so I’m investing that spare change in Audible.com. These guys are professional story-tellers, and I can put it on my portable music device and spend the wasted time in front of the tube exercising my brain for a change. Novel, you say? Exactely my point!

But, alas, I can still watch TV online. There’s always Hulu and the big cable network websites to check out, so I don’t think I’ll starve myself of mindless (though oddly enjoyable) entertainment anytime in the near future.

Apple vs. World

Another day, another set of tech company feuds. Some of you may know that Apple, Google and the Federal Trade Commission are looking into whether anything is amiss when Google people and Apple people are on each others executive boards. Well, whoop-dee-doo. I’d argue they’re in different tech sectors altogether, but with the announcement of Google’s Chrome OS (i.e. Linux), and the fact that the second generation of Android-based smart-phones are on the horizon, maybe there is some credibility there.

I’m a big fan of strategy games, and I think the smartphone market is the perfect place to whet my appetite with a good bit of strategy talk. Palm and Google have said that each of their respective mobile-platform operating systems, WebOS and Android, are going to eventually support Adobe’s Flash standard. Great! Right?

Apple has continually refused to nudge on the Flash-support front, and, from the Apple point-of-view, I think this is a rather smart move. First off, Apple’s always going to tick off a few people that are really wanting to see Flash on the iPhone. However, as Apple continues to gain marketshare, up from 5% to 10% over the last year, I think we will notice companies think twice about putting any content in the public domain that cannot be accessed by the entire smartphone market. Translation: if Apple’s market share continues to climb, more and more websites are going to have to find a method of making their product or company available to their entire user-base, and that means stripping Flash from their websites and opting for XHTML (or HTML5 whenever that one comes to fruition).

So what does Apple gain from not supporting Flash? I think their goal would be to make obsolete the Flash standard. If every other smartphone has spent time to bring such functionality to market, and it becomes moot, that means Apple has that much more strength. Apple’s never been a company to be “open” and, in fact, remains quite closed. I think we’ll see that Apple, by slowing development and deployment of Flash-based applications, will erode the future need to become “open” on any alternative platform. We won’t see Apple cave to anyone if they can move this mountain (or rather, prevent it from moving). If users were really wanting Flash and started buying Palm’s Pre in place of the iPhone, I think we’d see the chink in Apple’s armor become bigger, but if users accept the lack of Flash functionality, the use of Flash-based applications will, in turn, dissapate.

The RIAA really wanted Apple to have DRM in the iTunes store, but after Apple got enough of the downloadable music market, look what happened… Suddenly the RIAA’s bargaining power was lost because Apple was strong enough to say that DRM wasn’t gonna fly with them anymore. Sure enough, if Apple gets to the point where businesses are purposefully not using Flash because they don’t want to alienate potential end-users then Apple has more strength down the road negotiating standards and formats. This is something that could be massively powerful for the company when they do support a specific technology…

Bank stocks.... Buy! Sell! Trade!

I have to say, the last few weeks have been really good for me—in terms of the stock market.

I decided a couple months ago that I wanted to start playing around in the stock market. So I dumped a small amount of money into Scottrade with the intent of trading stocks like crazy. It turns out that I don’t trade, buy and sell stocks as often as I first thought I would. I had this vision of trading every 15 minutes…. “Buy Low, Sell High!”, “Limit order!”, etc.

Well, I started buying what I (thought) I knew best. Tech Stocks. I bought a bunch of Palm stock well before the notorious Pre came out, and boom, made a bunch (little bit) of money. Buy low, sell high! Wahoo! I bought and sold some Microsoft, Garmin, Google, and a few other companies. Then I decided to expand my horizons. I bought some Coca-Cola, because I am pretty sure I can keep the company afloat in tough economic times, and that is what we would call the blue-chip stock. Slowly but surely, it has done pretty well for me.

Then, came the bank stocks. I started investigating stocks like Bank of America, Citigroup, and JP Morgan Chase, and thought to myself… “they have to go up!” So I bought a bit in each, and boy, do I wish I bought a whole bunch more. Citigroup was originally $1/share, and is now up around $3.25/share. Bank of America was around $3.25/share and shot up to $14.50/share. The reason I like these bank stocks is because, as Uncle Sam has shown us, we’ll bail anybody out at this point. So it’s like a protected investment—they’re not going anywhere. Further, once they recover and start trading at their previous costs per share, I’m hoping to make a heft profit off of them.

So that’s my investing experience… Limited knowledge earned me a good bit of change in no time at all. Now, if I had a ton of money, you better believe I’d consult my investment advisor, but why not have a bit of fun while the stock market starts to recover from the shambles it’s been in as of late? Use that funny money, you might just make it back two times over!

Count the Lappy!

As I sit back in my favorite coffee shop to work a bit, I realized that there’s a better business model for these guys. As I look around, I’m counting 19 people, 10 of which are working on their laptops. Three people are in line for their caffeine fix, five are working on the newest generation of Apple’s Macbook, the other five are on a combination of Netbooks and Notebooks running Windows. The remaining six persons are being social, reading the newspaper or eating. I know what you’re thinking—you’re creepy, staring at everyones computers like that! Okay, I’ll give you that. I don’t normally try to check everyone’s lappy hardware out, but I realized that there is a better way for coffee shops to serve their tech savvy patrons. Let me explain.

Imagine walking into a coffee shop. You walk in, queue up, and order. Next, you wait for your order to be completed, grab your coffee, then pick a seat. Lets face it, you always eye out a spot with a power outlet so that you don’t have to leave in 30 minutes when your battery dies. If you’re unlucky and no seat is availble with an outlet, you watch those who are plugged in and try to hop in their seat when they leave.

Now, imagine walking into a tech-based coffee shop. You walk in, order and sit down. Don’t worry, someone’ll bring you your order with a dab of milk in it and a couple napkins. Did you decide on one of those scones or a bagel? No worries, navigate to the wifi hotspots homepage, key in your order and that nice person who brought your coffee order will soon be back with a toasted bagel, a dab of shmear and butter knife. Once you boot up your lappy, you notice the wireless password of the day posted on the wall, and log-on to a secure wifi connection. Don’t worry, no need for one of those shady wifi hotspots where you have to worry that logging on to your e-mail or banking website might result in your passwords being sniffed and stolen. Are you having trouble connecting via wifi? Flag down the coffee shop tech and they’ll get you up and running.

You start editing some of your vacation pictures and notice that in one corner of the room, the coffee shop tech is now giving a tutorial on image editing with Photoshop to a few other patrons. You decide that your cup of coffee might go well with a bit of education and join the daily “seminar” on an area of technology that happens to pique your interest. Before you know it, you’ve had a cup of coffee, learned how to get the red eye out of your holiday pictures, and spent half your day in your favorite “office space” that allows you to stay connected, productive and will maybe even teach you a few things. I’ll have to conecptualize this idea a bit more, but it’s certainly novel, in my opinion at least.

Wireless... In My Pocket

I think it was Bill Gates that said something like…

“In the future, the internet will be in everyone’s pocket.”

I think the relization of his dream hasn’t come yet, but in doing research about some of the latest and greatest mobile internet solutions brought to us by top U.S. cell carriers such as Sprint, AT&T and Verizon, it is clear that the technology is starting to come to fruition.

Oddly enough, I think Sprint is going to be leading the pack with their 4G network. Rumors have been appearing of late about Verizon “fast-tracking” their 4G solution for another rumor of an Apple table PC. These rumors are getting a bit old, but as soon as I start really knocking the rumor-blogsters I’ll be aghast to find a press-release from Apple stating that the tablet is real.

Enough of hi-jacking my own blog post… Sprint has already rolled out the “Beta” version of it’s 4G network in Baltimore and has concrete plans for rollouts in many other cities Q1 2010. The thing that excites me about the 4G network is that there are:

  • No Bandwidth Caps! All the major carriers currently limit you to 5 Gigabytes per month over their 3G networks.
  • Fast speeds! Imagine in 5 more years what hi-speed wifi brought to us over the air will mean—fiber-to-the-home will be moot, we’ll have hi-speed internet traveling straight to your pocket!
  • Competition! Eventually (maybe on the 5G networks) we will have a choice of having internet provided by any of Comcast, Sprint, AT&T, Verizon or whatever other cable/DSL companies that exist in the neighborhood. This is great for the consumers because as TV and telephony converge into the Internet we’ll finally have a TV/phone/internet solution that will be the equivalent of a modem and router that is mobile, fast and, most importantly, cheap!

This is bad news for some of the companies that have invested heavily in land-line infrastructure, such as Comcast and AT&T, because eventually I’d bet that most everything to the end-user will arrive from over-the-air. Well, that’s my two cents. I could be totally off course, but I know what companies I’m going to be investing in and watching over the next few years.

Tech Support + Family = ...

Some in my family would call me a tech enthusiast… a label I accept open-armed. Geek and nerd are names that have been tossed my way, and I’m pretty content being called any of these because, lets face it, they’re pretty darn accurate. Being called upon by various family members and friends to answer tech questions, advise on purchases and troubleshoot annoying computer problems are just a regular task for me these days. While I know some people in the tech community loathe calls that go something like, “Hey Sig, how are you? Do you have a minute to answer…?”, I actually rather enjoy them.

 

I know some people are thinking I’m crazy for saying this. Who actually enjoys doing tech support, and for free!? I decided a while back to happily accept any “Call For Help” (sorry TechTV, I had to steal that title) because it is a great communications medium. We all like to feel needed and useful from time to time (I’m not sure why this is, but I’ll leave that to the psychologists to answer). When receiving a call from aunts, uncles, sisters, parents, cousins or friends, I not only get to find out what tech my family and friends are into in terms of technology, but what makes them tick when using it. When hearing stuff like “this stupid printer…”, “I really NEED a new phone, this thing just…”, and “who the hell designed this thing” I tend to chuckle a little bit and procede with the best advice I can give to fix whatever ailment is plaguing the particular item at hand. I also, however, get to find out what my cousins are doing half-way around the U.S. (and world!), how wedding plans are progressing, or the latest news with whomever decided to ring me up that particular day.

In addition to tech support, I also love calls about potential technology purchases. Whether it’s a question of upgrading to the latest version of Windows, ditching the desktop and getting a laptop, or finding out whether it’s useful to get a netbook or not I tend to get great investing advice. That’s right… It’s all about the money! I’ll admit, I was the first one in my family (I think) to get the 1st generation iPhone, and had I had the cash to dump some spare change into Apple at the time, I probably would have made a quick buck. If I realized that netbooks were gonna be popular with some in the famliy, I would have probably dunked some money into a computer manufacturer like Acer or ARM, a popular processor-maker for phones, netbooks, and other devices that, in some cases, we don’t even realize have a “processor.”

Well, in short, I guess I’m trying to say that answering a few tech questions every now and again keeps me connected with a bunch of different family members at odd intervals. It’s pretty easy to rely on Windows going berzerk, or a printer wigging out, and it’s these connundrums that enable me to reconnect, albeit breifly, with all sorts of family and friends that I may only hear from on select occasions throughout the year. If I also get some investing advice on tech stocks or cool new products myself, all the better.