Programming My Life Rotating Header Image

Dropbox

Dropbox is a service that allows cloud file hosting across all major platforms (Linux, Mac, Windows, iPhone, Android, etc.).  In addition to allowing access to my own files anywhere, I am also able to share any files I choose with other Dropbox members.  Dropbox offers 2GB of free storage for first time users.  You can increase your storage by a few hundred MB by completing some actions when you sign up to get used to the service, or by referring friends to the service*.  You can also get significantly more storage by paying a monthly fee.  Rates are available at the site.

At work, I am currently using Unity3D, which works in both Mac and Windows.  By storing my project files in my dropbox, I can open the project folder I was working with in Unity on either platform and be right where I left off regardless of which platform I was using previously.  Additionally, I am hoping to work with a colleague on a programming project collaboratively.  Instead of worrying about securely sharing files in a timely manner, we can simply set up a shared drop box folder so the work is done for us.

I’ve been using dropbox for over a few months now and haven’t had any real problems.  They also have one of the best hiring pages I’ve seen.  Have you used Dropbox?  Any problems?

*If you are interested in getting a Dropbox account, you can use this link:  https://www.dropbox.com/referrals/NTY1NDE0NTE5, which will give me some extra storage.  If you don’t feel comfortable with that, you can also get a free account from the Dropbox site linked above.

Browser Tab Innovation?

Notsomuch, actually.  Since my post on browser tab stagnation, not much has changed in terms of offerings from the major browsers. However, I have found two services that have addressed some of the issues I raised:  Google Bookmarks and fur.ly.

Google Bookmarks

In my post on browser tab stagnation, I claimed that bookmarking simply wouldn’t solve many of the problems I have with the state of tabbed browsing.  I still feel that way, but Google Bookmarks has helped with at least one of the problems I’ve had with browsers recently; instead of the named groups of tabs I was looking for, Google Bookmarks’ tag feature allows me to see related sites.  Being able to tag bookmarks and keep them consistent in the cloud (rather than having to update them on separate machines) has helped me immensely.  First, if I find a work related link at home, or a link I think would be interesting for a personal project at work, I am able to put them in the same place, with the same amount of effort as traditional bookmarking, regardless of my location.  Second, instead of having to create folders and worry about organizing bookmarks, I can simply tag the bookmarks and search by tag later.  Moreover, I don’t even have to enter the entire tag if I’ve already created it as Google bookmarks uses autocomplete.

Before I started using Google bookmarks, I would generally just bookmark a site and put off organizing them until later (I still haven’t done that since January).  Now organizing is a simple matter of typing the tag.  The tags are especially helpful because they allow me to see what references I have for a specific topic.  The ability to search and the reduction in the amount of work cause me to bookmark more sites for reference.  As an example, I am interested in programming for my phone, so I have been reading up on Android programming.  The problem is, between work and other obligations, I haven’t been able to look into it for the past few weeks.  Bookmark tags allow me to search for anything I’ve added about Android and either remember where I was in the process, or dive in from a different direction.

To use Google Bookmarks, I have added the Bookmarklet from here to each of my browsers.

fur.ly

fur.ly is a URL shortening service that accepts multiple URLs and provides a shortened link.  Upon opening the link provided by fur.ly, the user sees the first page from the list of URLs topped by a small header with links to 1) get rid of the header 2) move to the next link 3) see statistics about the fur.ly link as well as a dropdown menu of all the pages supplied with the original link.  This is a unique service that allows for a bit more focused browsing on a particular subject.  While I would prefer a browser feature that allowed me to save and load multiple tabs, this service at least allows me to share multiple links in a focused way.

Conclusion

Sadly, fur.ly still requires about the same amount of effort as my usual method of simply copying and pasting the links into an email (to myself or a friend/colleague).   Hopefully newer versions of browsers will address this natively.  Also, while Google Bookmarks has been great, it would be great if I could simply name a tag and click a few tabs that could be labeled and saved with that tag rather than having to click and bookmark each tab and add the same tag repeatedly.  Finally, I would still like the ability to control the state of my tabs in addition to having it automated.  I have learned to work around this problem, but I would prefer to be able to have it addressed by the browsers so I don’t have to worry about losing tabs/windows when I close my browser.

New Software: Evernote

As I promised too long ago, I will begin reviewing some productivity software that I have begun using.

Evernote is a program available on nearly every platform (including mobile platforms) and on the web.  Users can make small notes and organize them either in a downloaded app (which will sync to the cloud for uniformity across all versions) or directly on the website.  Notes can consist of websites (in part or in their entirety) through plug-ins for Firefox and Chrome, pictures, and text.

One of the primary benefits of Evernote is the ability to sync notes across all platforms.  This is what makes cloud computing fantastic.  At one point, I was having trouble opening Evernote in Windows 7.  Thanks to the synced online version of the program, I was able to view all of my previous notes and add anything I needed.  Eventually, the program started back up and I haven’t had problems since.  Had this been an offline application, I would have had to resort to other methods on note taking while I found a solution.  But with the Evernote website to complement the downloadable program, I am able to make and view notes if the program acts up, or if I am at a computer without the program.

While there are plenty of ways to use Evernote, I use it mostly to keep my notes organized no matter where I may be.  One of my primary problems with note taking is that I tend to have notes scattered in several locations and media types (home vs. office, digital vs pen and paper, etc.).  This is particularly problematic because I work from home (or while traveling) and not having my notes leaves me trying to remember where I left off.  Additionally, sometimes I need to stay at the office and would prefer to do work on a personal project after working a full day.  Here I am left with the same problem.  Evernote helps solve these problems by keeping my notes all in one place.  I was previously trying to use Google Docs for this purpose, but I find Evernote more conducive to note taking and now use Google Docs for larger documents.

Recently, my boss gave me a paper to proofread just before lunch. I went to my office and put notes in Evernote as I read. About halfway through I went back to the conference room, hit sync and finished taking notes there.  Before using Evernote, I would have had to use a USB memory stick or emailed the file to myself.  With Evernote, I only had to hit the sync button.

I have the Android app for Evernote on my phone, but I haven’t used it much since I first got it.  The only complaints I have with the mobile version is that in order to see all of your notes, you have to search the empty string.  That is, hit the search button with nothing in the search bar.  This isn’t a negative per se, but I only figured it out by trying every option possible.  It would have been nice if that was explained when the program started for the first time.  Also, none of the notes are in their respective notebooks as they are in the online and desktop versions.  These are minor problems, though for an app that is primarily designed to simply take notes on the go.  It serves as a good sidekick to the desktop app.

I’ve been using Evernote for quite a few months now, but I still use it primarily for taking simple, text-based notes.   For this purpose, it has been a great help in providing a single repository for my notes for everything from work to personal projects.  I’ll be sure to post a follow up if I delve into the extra features.

Why Community Can Be More Important Than Quality

Facebook, Twitter, and Youtube all rely heavily on their users to provide the content.  The developers and designers for these companies simply provide a platform for the users to share updates, information, and videos.

Facebook

Facebook has gone through many iterations since its small beginnings.   While most of the interface choices have been acceptable, many users and tech enthusiasts are unhappy with Facebook’s perceived lack of privacy protection. In fact, I refuse to add any facebook apps or games to my profile for fear that my information will be leaked.  I have also decided against linking my interests, favorite books, movies, etc.  I am not this careful with any other sites.

One change I have personally been disappointed in is the lack of profile change notifications in the news feed.  One friend of mine changes her ‘Favorite Quotes’ category often with humorous quotes from her friends.  Even the quotes from people I don’t know are generally entertaining, but I almost never remember to check her profile because the notification that she has changed the quotes is no longer on the news feed.

Even with these problems, though I continue to use Facebook to keep in touch with some friends who I don’t see or talk to as regularly as I would like.

Twitter

Everyone hates you, whale.

If you use Twitter, you have seen this image.

In addition to more downtime than any other major site I have encountered, Twitter’s website is lacking so many features that the majority of users use third party developed desktop or mobile apps instead of the website to view and update content.  The most glaring omission to me is the inability to see ‘conversations,’ when two people you follow reply to each other back and forth.  Despite this (and a lack of a clear financial plan), Twitter continues to grow in members and valuation.

I would love if something like Google Buzz actually took off, but the people I follow on Twitter mostly don’t publicize their Buzz profiles.

Youtube

Clocking in with the second most error prone major website I use, Youtube.

I use youtube in four ways:

1.  Watching videos from my subscribed channels.

2.  Watching a video someone links me to.

3.  Searching for videos.

4.  Uploading videos.

This is the order respective of how often I do each of these tasks.  The fact that I can’t sign in and view my subscriptions with the Youtube app on Android is the primary reason I have yet to actually use it more than once.*  Additionally, I am almost positive Youtube has broken its own playlist function.  I recently have tried to set up playlists to watch a few videos in a row only to find that this feature is completely broken**.

The only way to watch multiple videos in the order I want from my subscription page is to add them to the ‘watch queue’ one at a time, in the order I want to watch them.  If I add two at once, they go in on the order they are on the subscription page. While adding a video to my quicklist yields me a text box notification that it has been added, it does not give me a link to get to that page (I am almost positive there was a link there before a recent update).  Instead, I need to go from the subscriptions page to the:

1.  username drop down

2.  select ‘My Videos’

3.  select the ‘Watch Queue’ tab.

Once there, I am unable to reorganize the order of the videos.  I can only remove videos.

There is also no way to ‘line up’ a series of videos (or even a single video) to follow the one you are currently watching.  That is, if I am watching part 1 of 4, there is no way to have part 2 immediately follow part 1.  The only way to do this would be to start a list with part 2 and go there after part 1 finishes, or set up a list with parts 1 and 2, and restart part 1 from your current location.

Youtube has seemingly tried to improve the subscription watching experience by adding a pop-up bar at the bottom of the screen that allows me to go through new videos from my subscriptions.  However, it is missing the fundamental ability to change the order that those videos exist in.

It baffles me that the designers at Youtube/Google could create so many different ways to attempt to get people to use their subscriptions function without understanding that people might want a little control over the order in which they watch these videos.  In addition to problems with advanced usability, Youtube also has some fundamental errors.

When trying to upload a video, Youtube’s status bars (which have changed numerous times over the time I have used the service) have nearly always failed to inform me of how long a video had left to upload.  I understand that with variable uploading rates, an accurate time is not always possible, but seeing the status bar race to 100% and waiting for another 10 minutes to find that the video still  hasn’t finished uploading (with no other heavy uploading occurring) is awful design.  Even with the current design showing which frame of the video is currently uploading, videos often finish without uploading the information I have set (title, description, etc.), and I am forced to edit these fields for a second time.  This is usually after I have waited some arbitrary amount of time and realized Youtube has failed to finish the upload appropriately.  Again.

Another recent update to the mobile site has made it impossible for me to see new videos for my subscriptions all in one list.  Instead, I can see a list of new videos from my subscriptions mixed with highly rated videos, newly added videos, and others.  I can also see what videos my subscribed channels have posted individually.  But I can no longer look at a single list showing what all the channels I have subscribed to have added recently. **

I have no idea how these can be looked at as ‘improvements’.  It baffles me that someone decided that users would prefer to not have a link to their quicklist or queue (the name has changed recently) or that they would not want to see the newest videos from all of the channels they subscribe to.

So why do we continue to use these sites?

Despite some awful design decisions, it is the communities that make these sites worth using.  I can’t tell all of my friends to stop using Facebook and hop on a new site with a better interface and less privacy concerns and hope they will all comply.  I can’t tell all of the people I follow on twitter to find a better site to post links that are relevant to my interests and see a change.  I can’t force all of the channels on youtube that I subscribe to to move to a site with a better user interface.

I guess the only thing left to do is design a better social networking site that everyone will flock to, a better site for posting 140 word quips, and a better site for video sharing.  Shouldn’t be a problem…

*Update:  I was wrong. I can log in on the Android app, but it does not have a ‘new videos’ feature under subscriptions that I could find.  It gaveme errors 4/5 times I tried to access it, though so it may be in there eventually.

**Update: This was true when I drafted this article, but has since been fixed.  In the meantime, the subscription page on the full version of the site was offline for nearly a day.

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.

A Non-Apology

I’ve heard a few bloggers advise against repeatedly apologizing for lulls in posting.  If I were to have apologized each time I lapsed on this blog, it might be filled with nearly as many apologies as topical posts.  Consequently, I’m not going to apologize here for taking a month off, but I am going to give you the primary reason for my absence:

The World Cup trophy. Source at link.

I’ll provide a link to the picture of Larissa Riquelme of Paraguay for work safety (no nudity, just a lot of cleavage):  http://inapcache.boston.com/universal/site_graphics/blogs/bigpicture/worldcup_06_25/w18_24042095.jpg

She claimed she would pose nude if Paraguay won.

The other person we would have seen naked had his team won: Diego Maradona. Source at image link.

There are far too many story lines from the tournament to list here, but there are several stories well told in pictures from The Boston Globe‘s galleries here, here, here, and here.  All images below are from these galleries.

This flag representing the host nation as well as all others in the tournament.

Certainly the best moment of the tournament for any fan of the US team.

Just one of many controversial decisions by the officials, this picture is of the goal never given to England in their match with Germany.

I've never seen as many angry Brazilians as I did in this game. One of the biggest upsets of the competition.

The only perfect record from the tournament came from Paul the octopus who went 8/8 in predictions.

The goal that won it all. This was the latest first goal in World Cup Final history.

The champions: Spain.

I can't imagine how great this must have been from inside the stadium.

I didn’t give any real consideration to traveling to South Africa until after the tournament began.  I’m going to start looking into how I can go to Brazil for 2014 in the next couple of years.

I should be back to my approximately weekly posting schedule for the foreseeable future.

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 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.