Mint Sucks Redux

After writing about Mint, I decided to give it a second chance to impress me.  While I maintain that software should be intuitive (e.g. I should be able to change categories of purchases easily, anywhere), I gave in and used the method Mint seems to be forcing me toward;  I used the ‘transactions’ tab to go through my purchases from the last six months to re-categorize any mistakes.

Now that my purchases are categorized appropriately for my budget, I would like to analyze my spending for those six months.  When it comes to my spending habits, I can compare my purchases this month to last month by category. This is mildly interesting, but month-to-month it is easy to have large (or unusually small) expenditures in a given category throw things off.  I really need to look at my average spending over a longer time scale to determine whether I am over or underestimating my spending in specific categories.

One way to do this is to look at the ‘This Year’ tab on the Trends page.  However, this only shows categories, not subcategories.   This means I can see how much I spent on food but not how much I spent on restaurants vs. groceries.  This provides very little insight.  While doing this, I saw that my spending in the automobile category seemed a bit high.  I wanted to click through to see what I had spent so much on for my car, but I am unable to.  Unacceptable.

The only way I was able to look into my spending in subcategories was to go through each month and perform the arithmetic myself to average my spending. Worse than not being able to do this fundamental budgeting task is the fact that I can’t seem to determine what statistics I should look at to see where I can improve my budget.  I’ve tried clicking around the Trends page and seeing if any of the provided statistics give me any insight into my finances, but none of them do.

I’ve noticed a couple of other minor problems since my last Mint article like the inability to spread a lump sum payment over several months; my gym membership is done by semester, though I’d like to divide it up monthly.  Also, it would be great if Mint would ‘learn’ what categories a purchase should be in if I change it for several months in a row;  my ATM withdraws have Penn State in the name of the ATM and thus go into the ‘tuition’ category.  If these minor problems were all that existed, I would be writing a glowing review of how excellent Mint software is with a small addendum on features I’d like to see in the future.  But here we are.

I would like to address why we are here.  It was not my intention to write two articles disparaging Mint (or any other software).  In fact, when I began using Mint, my initial notes were quite positive.  I couldn’t wait to write a review of how great this software was and how it helped me fine tune my budget with little to no effort on my part.  That simply isn’t the case, though.  I will likely still use Mint to keep track of my spending, but I can’t see recommending it to anyone with such a lackluster interface.  When it comes to budgeting, there is too much work for the user to do to come up with meaningful statistics to consider Mint a tool for quick, easy budgeting.

Seeing is Believing: Why Prototyping is Worth the Time

This week I was joined by a former colleague who previously helped work on a story-based course similar to the one we are trying to design.  The previous course had no game elements and was targeted at the general university student rather than at the middle school level, but the design of the art and story could be similar for these two projects.  While we had a few ideas for the story and individual game segments prior to his arrival, bringing him in really jump-started the project and helped flesh out many ideas for the story and gameplay.  More important than the help of another person, though, was seeing prototypes for ideas that we had previously only talked about.

The first example of this came when my colleague decided to mock-up a martian landscape.  We had been discussing using a martian landscape with a space station as the main setting for weeks.  Seeing the basic landscape allowed me to consider the finer details of the scene instead of just the big picture.  It also assured that the picture in everyone’s mind for this space station was nearly identical, rather than the unlimited possibilities we leave open by simply discussing it and not having any visual representation.

The second major breakthrough came when I was able to convince my boss that having controllable 3D characters was a perfectly reasonable possibility for this game.  At one point, we were debating having much of the story happen through comic strip-like interludes with text possibly supplemented by movies.  But with Unity, I found it was not much of a challenge to put together a control and camera scheme for any 3D model that we have.   I thought perhaps my boss was simply more fond of the movies/comic idea than having controllable characters until I showed her a demo with a controllable character having a discussion with an NPC (non-playable character).  She then informed me that she previously was concerned that controllable characters would have taken more time than we would be able to allocate.

Giving visual representation to ideas can serve two purposes in software design (games or otherwise):

1.  It gives your team a unified representation of the visual object you are discussing.

2.  It proves that the idea can be put into action.

In creating the dialogue between the playable character and the NPC, I presented a basic paragraph about Mars (borrowed from the wiki entry), then presented the user with a question and the ability to offer 3 answers, each with its own response from the NPC.  While the code for this would be quite inefficient for a larger dialogue, I have proven that dialogue between characters can be done in a short time. While I’ll need to tackle the dialogue problem in the near future, this prototype demonstrated to my boss that player controllable characters can be used to do nearly anything we require in order to convey the story.  With only a few hours of work, I was able to settle a debate we had been having for months.  Even if this wasn’t what we wanted, having this decided for only a few hours of work is certainly worth the small investment.

Software: Mint

I love the idea of Mint.com.  I love that their business model is based on anonymous user data. A one stop shop for all of my financial accounts is an amazing convenience for me;  I have five financial institutions whose online services I use.  Finally, having a product that allows me to plan a monthly budget and keeps track of how well I stick to that budget is amazing.  The idea of Mint is great.  Unfortunately, the execution couldn’t be more disappointing.

Mint has been around since 2006, and in November of 2009 it was acquired by Intuit, the makers of Quicken and Turbo Tax according to Wikipedia. I would expect most of Mint’s major functionality issues to be ironed out after four years of development time and now having Intuit’s design experience. In the 5 months that I have had my account, they have not.

One problem I can easily forgive is Mint’s inability to correctly categorize all of my transactions.  Fine, I get it, you don’t know every retailer and what they do.  Even if you did, what if I wanted to categorize things a different way?  This is not a problem.  What is a problem, though, is how I am supposed to categorize purchases.  While I could keep up with every transaction I make in the Transactions tab, I much prefer to check my spending at the end of each month and make changes there.

To do this, I must click the ‘Planning’ tab, go into a preset category (or the default ‘Everything Else’ category) and see individual purchases in each.  Up to this point I have no problems.  Now I re-categorize something.  Great.  Next, I want to go back and check what that purchase was under ‘Shopping’ that seemed like it might need changed to a more specific category.  Where do I go?  I have to go back to the ‘Planning’ tab, go back into the month I was correcting (the default is the current month, and I am usually correcting the previous month), reopen the category I want to see, and finally check the transactions for that subcategory.  After four or five corrections, it becomes apparent just how awful this interface is.

I want to be clear here that I am not an interface designer.  I’ve been doing some minor interface design for work recently, and it has made me realize just how tedious it can be (should I move this text box 5 pixels left? up?) and how much work goes into making it so the user never thinks about it.  It isn’t a flashy job.  Rarely does someone say ‘you know, the placement on that text box was so perfect.’  More likely it will be ‘Oh yes, that was easy to use, but I don’t know why.’  With that out of the way, this is not a minor interface gripe where I think a box should have been moved or something should have been presented in a different way.  When I go into the ‘Planning’ tab, open a category (or categories), then click through to a specific subcategory to change a transaction, there absolutely needs to be a button that brings me back exactly to where I was.

For a simple example of how this design can ruin a project, imagine if Facebook had a similarly designed interface.  I click on Jack’s profile and want to see what his favorite bands are, so I go to his info.  Now I want to see his wall.  The correct design allows me to simply click that tab and go there.  However, with a design analogous to Mint, I would have to go back to my list of friends and find Jack again before I was able to check a different section of his profile.  As much as I might love to waste time on Facebook, I prefer to do so efficiently.

There are other problems I have with Mint (both major and minor), including the lack of a running tally for my accounts, but these pale in comparison to the clunky interface.  Software is meant to be designed so that users can’t get it wrong.  Mint just doesn’t have the ease of use that would make its product great.  For now, I’ll continue going to my individual financial institution sites until Mint can clean up its act.

Google Pac Man

As many of you probably already know, yesterday Google changed their logo to a playable Pac Man game in honor of the 30th anniversary of the game.  A few members of StackOverflow put together the code and assets to allow others (like me) to host it on their own site or even locally. Here is the game:

Google Pacman

And here are the assets if you want to host it locally:

Google Pacman at GitHub

Unity

Currently, my job is to create a game to teach astronomy to middle school students. Luckily for me, there is an abundance of options for game engines to help me ranging from the simple and free (Scratch and Alice) to the expensive and complex (Unreal, etc). For our project we wanted an engine deep enough to cover multiple game types in one game that was reasonably priced.  After debating over the 2D vs. 3D issue, I decided 3D might be too complex for the style of game we wanted to create.  However, after prototyping a few game ideas in several different engines, we settled on Unity for its flexibility and affordability (free for the indie version $1200 for the pro version).  Even though it is primarily a 3D engine, 2D games can be made without much trouble.

In order to get familiar with the Unity engine, I followed two tutorials I found in the Unity forums. The first was a basic shmup.

The second tutorial was a redux (in C#)  of the first plus an extension that included models for the ship and asteroid.  While I followed along with this tutorial, I decided to keep everything in JavaScript.  This helped me to clarify some of the elements of the Unity engine independent of language.

After completing the tutorials, I decided to extend the game a bit to include bombs, more asteroids and large asteroids.  As of this writing, I haven’t made final decisions for how to complete the game (whether it will be a score the player must or a set time limit), but the current version can be found here:

http://programmingmylife.com/spaceShooter/spaceShooter.html

Unity makes the process of uploading any game you build in the engine to a website incredibly easy.  When making a build of a game you simply have to use the following settings:

File >  Build settings > web player      (make sure to include all scenes)

When you build the game it will create a *.unity and a *.html file (the * represents the name of the game that you set).  Assuming your web host knows what to do with the .unity file, you can simply upload the two files and the game will run at that web location.  If, like me, your web host doesn’t support the .unity file format likely this will cause your browser to fail to download the content.  I received an error on Chrome stating ‘Failed to download data file’ with details ‘Download failed, try again’, but on Firefox, the download status simply stayed at zero. To fix this,  you will simply need to include in the directory with the .unity and .html file the following in a file called web.config:

<?xml version="1.0" encoding="utf-8" ?>

<configuration>
    <system.webServer>

        <staticContent>
            <mimeMap fileExtension=".unity3d" mimeType="application/vnd.unity" />

     </staticContent>
    </system.webServer>

</configuration>

I was able to find these instructions from this query at Unity Answers.  Unity Answers is a great service that runs in addition to the Unity forums.  These two complementary services along with the users give Unity a strong community that should allow users from novice to advanced to find answers to any problems they might have.

How to Set up androidVNC with TightVNC and a Linksys WRT54G Router (Windows)

Have you ever gotten to work and realized you forgot to start the download for that movie that just released today?  Or maybe Steam is having a sale and you want the game downloaded before you get home so you don’t have to wait to play.  VNC clients allow you to do just that, and now you can do it from anywhere with an Android device and a data plan (or on Wifi).

In the past week since I bought my Droid Incredible, I have been scouring the internet and asking friends to suggest their favorite apps.  Nearly all of the apps have been easy to install and use, save for one.  AndroidVNC requires a small amount of setup by the user (especially if your home network is not configured for outside VNC access). I wanted to create this post because while this isn’t a complicated process, I wasn’t able to find a set of instructions with all the steps in one place.

I intend to make ‘How to’ posts for any software or hardware project I do that requires me to use multiple sources to finish.  This will hopefully serve to help others that use similar configurations in the future and to remain as a record of what I’ve done for my own reference.

NB:  If you are trying to do this with a different router, you should determine how to forward the ports (5900, 5800, 5500) on your router, then skip to step 2.

Step 1:

To begin, we need to setup port forwarding on our WRT54G router.  First, you will need to enter the setup page for your router. The default address for this page is 192.168.1.1 which you can simply enter into your browser address bar.  If this doesn’t work, you likely either have a dynamic IP (here is how to set up a static IP), or your router’s IP address has been set to a different address and you will need to go there instead.  Upon entering the settings page, you should be asked for a username and password.  The defaults here are to leave username blank and enter the password ‘admin’ without the single quotes. I do suggest changing these to include a real username and a non-dictionary word password for better home netowrk security.

Now that you are logged in to your router settings page, you need to click the security tab and uncheck the ‘Block Anonymous Internet Requests’ box seen here:

After you have done that, be sure to click the ‘Save Settings’ button at the bottom of the page.

Before we can forward our ports, we need to know what the local address of the PC is.  You will need to open the ‘Run’ box of your operating system.  In Windows 7 and Vista, just type run into the search box in the start menu.  For XP, click the run button in the start menu.  Type ‘cmd’ (again, without single quotes) into the box and hit enter.  In the window, type ‘ipconfig’ (no quotes), hit enter, and look for the value next to IPv4 Address.  It should be of the form ’192.168.1.XXX’.  Write this down.

Finally, we are ready to forward the ports!  Back in the WRT54G setup window, click the ‘Applications and Gaming’ tab.  Type the ports to forward as seen below, check the enable boxes (on the three lines you are changing), enter the last part of the IP address you found above in the IP address boxes, and hit the Save settings button again.  If done correctly, the settings should be on the page when it reloads.  If you do not enter an IP address into the box(es), the ports will not save and you will need to re-enter the information.

Step 2:  Finding your IP Address

This one is simple.  Simply click the following link:

What is my IP Adrress?

Look for the number after ‘Your IP Address is:’.  Write this down.

Step 3:  Setting up TightVNC

Go to the TightVNC website, and download the software.  Be sure to get the latest beta version if you are using Windows 7 or Windows Vista.  Now, install the software using the default settings. During the installation, TightVNC should ask you for an administration and primary password.  Be sure to set these up now and write them down.  Now that TightVNC is set up, go to the start menu and run TightVNC Server.  Run application mode if you want the service to end on log out (if you have multiple users on your system or if you have safety concerns).  Otherwise, either application mode or running as a service should be fine.

Step 4:  Setting up AndroidVNC on the Device

First, download the AndroidVNC program from the Android Marketplace, or scan the following QR code:

Open the program, leave the ‘Nickname’ field blank, enter the primary password that you created for TightVNC (not the administrative password, if you made them different), and enter your IP Address from step 2.  Click connect and you should be able to control your PC from your Android device!

Incredible

Last week, I decided to jump on board the Android bus and bought the HTC Droid Incredible. I haven’t had it long enough to give a full review, but I’d like to give a review of my first experiences with my own smart phone (I have played with other smart phones, but having one all the time for a few days is a different experience than playing with one even for an extended period).

Technically, my first smart phone was the LG Vu. I returned it within the 30 day return period because 1. I couldn’t justify the extra expense of the data plan 2. The internet and phone in general were sluggish and 3. The apps that currently make smart phones much more enticing were nearly nonexistent. The Vu was mostly just a touchscreen version of the LG Shine (which is the phone I ended up going with).

The Incredible’s 1 GHz Snapdragon processor along with the relative maturity of the Android App Marketplace take care of the latter two concerns. I have not yet felt as though the phone was slow to do anything. Snapping through the home screens and getting into apps are a breeze thanks to the processor. So far, most of the apps seem interesting, but I haven’t had reasons to use them naturally. I’ve opened them up and looked around, but I haven’t wanted movie times because I was going to a movie or looked for a specific youtube video using the app for example. I’ll get around to discussing those things when I’ve had a better chance to interact with those apps organically.

What I have had much more interaction with thus far are the widgets. These alone have nearly justified my purchase. The home screen widget from HTC gives me a large display of the time and the weather, which I would hardly ever check before I had this phone. I also have a habit of not checking my Google Calendar nearly as much as I’d like to remember important dates and events. I have been checking it more often now that it is more easily accessible, and I think I will be using my it more often now that I don’t have to go out of my way to see it.

The Scoreboard widget has also helped me out already. Friday night I had a bit of time to kill before leaving to meet some friends, and the widget reminded me that a hockey game was on that I wanted to see. Without that, I would have likely forgot and done something else. It is a quick and convenient place to check when my favorite teams are playing next.  It also send notifications for score updates for my favorite teams.

Also, during dinner Friday night I was able to use the internet to come up with some trivia my friends and I were debating (did you know John Milius directed Conan?).

The Facebook widget hasn’t really done much to change how I view Facebook. It scrolls through some of the most recent status updates, but if I really want to check Facebook, I will always open the full app to scroll faster.  The same goes for Twitter.

Another big upside to having a smart phone with a data plan is being able to take advantage of Google Voice.  One way to justify the extra expense of the data plan is using Google Voice to manage text messages.  While you can’t send to multiple recipients or send MMS messages, all regular texts are free and get sent to the Google Voice app.  The only difference between checking a regular text and one through Google Voice is which button you click to open the message.  Depending how much you pay for texts each month, this alone could justify the price of the data plan.  Additionally, I can’t stand that carriers see fit to charge for texts with a data plan.  There is nothing special about the data in a text.  It is simply a packet of data of predefined size that your wireless carrier charges you a special rate for because they can.  There are other advantages to Google Voice, but sticking it to the man is the one that matters most to me.

So while I am still getting used to having a phone capable of all this (as well as getting used to a touchscreen keyboard), I can’t see myself going back to a ‘dumbphone’.  I’ll get into any problems I run into with the phone in a post in the near future, but for now, I can’t come up with anything negative about this phone: it’s just too incredible.

Browser Tab Stagnation

In the same way that it would be hard for me to imagine life without a cell phone, I can’t imagine going back to browsers without tabs.  Tabs allow me to organize my browsing more efficiently.  In fact, I currently have 17 tabs open in just this browser (12 in my other browser).  However, since being introduced to Firefox a few years ago (and Chrome more recently), I have not seen tabs change in a way to allow for more efficient sharing of information or to allow for more control over my browser’s state.

Specifically, I would like to see a browser allow the user to group tabs for two specific purposes.  First, when I am taking a break at work and decide to look at a few sites, or even if I am waiting for something at the end of the day and find a few stories just before leaving, I just copy and paste the URLs and email the to myself.  It would be significantly more efficient if I could group those tabs and have the browser take care of the URLs for me in a small file I could email myself.

Second, if a colleague wants me to provide some background on a subject (or vice versa), I typically do exactly what I do for myself: open several tabs, then copy and paste the URLs into an email or IM.  It would be nice if I could send a file that opened the URLs in his browser so that he could see all of the links rather than opening them individually.

It would also be great if I could break a set of tabs into a named group.  Currently, I have 4 Chrome windows open because I want to separate articles into specific groups so that I’m not jumping from one focus to another between articles.  I am realizing in my ‘computing articles’ window that it is quickly being divided into articles about computing technology and articles that instruct me on something I want to do (overclock my GPU, make a hackintosh, etc.).  So now I’m looking at potentially more windows.  It would be great if I could save all of these tabs into one file that would open them all.

Some may quip that bookmarks serve the purposes I am asking for, but beyond these smaller quibbles that can be solved with some copying and pasting lies a much larger issue I have with the current state of tabbed browsing: saving the state of my tabs is handled autonomously leaving me to guess at the saved state of my tabs.

Chrome’s greatest advantage (tabs as there own processes) is its greatest weakness here.  In order to restart the browser and get all of my tabs back, I need to ensure that all of my tabs are in one window and that I shut down that window.  The same goes for Firefox.

This week while troubleshooting an unrelated problem, my network admin closed my Firefox window and opened a new one,  leaving my previous save state (and all 732 tabs I had open) to vanish into the ether.  By allowing me to save and store tabs, I would never have to worry about him or anyone else (including myself) doing this.

Productivity software (Word, Excel, etc), games, even podcasts in iTunes all offer both manual and automatic save states.  Why can’t browsers?

Why, HP?

After installing my printer drivers recently, I was faced with this:

I have to click so that my computer does not restart?

First, the line ‘You must restart your computer to finish the install’ is standard for many installations in Windows.  While it would be great to not have to worry about the restart, I have been conditioned to expect it.  What makes this line awful in this context is that I haven’t been conditioned to search for a check box to not restart.

While I love software, I do not love watching install.  In fact, I will go out on a limb here and say most people do not like to sit and watch software install.  Consequently, I imagine others multitask while software is installing, as I do.  When the install finishes, I am ready to click finish or restart later and get on with whatever I am doing.  Here, though, if I am rushing through, I get an unexpected restart.

Someone made a design decision requiring that the user check a box in order that the system not shut down.  I can’t imagine a single user that would, when asked, say they preferred this method to restart now/later or having restart later be the default.  So why is it in my driver, HP?

Death of AIM

Despite being a big fan of AOL Instant Messenger for years, I closed the application recently for what could be the final time.  I realized that there were only about 3 people that I talk to regularly on AIM as opposed to Gchat and signed into AIM on Gchat instead of running a separate application.

One of my primary frustrations with AIM is the lack of spell check. Perhaps they have cleared this up in a more recent version, but I can’t remember the last time AIM prompted me to update.  I also had problems with IMs continually flashing as if they were new while I was responding to them.  However, even if the program were flawless, I can’t imagine needing to use it much longer.

Although the functionality of AIM is still alive and well, many of its functions have been spread out over newer services.  Profiles and away messages have been usurped by social networking services like Facebook and Twitter.  I can share links and information on these services as well.  If I need to have a quick chat with someone SMS allows me to reach them even if they aren’t on a computer.

I decided to move away from AIM because of a few problems I had with the software, but this has just made me realize how much communication is changing with so many avenues for getting in touch now.