Archive for the ‘Software’ Category
Google Talk for Android
I find myself using Google’s instant message services (chat in Gmail, Talk on the Incredible) quite frequently, whether to share a link or catch up with a friend. It is incredibly convenient to use as it allows me to focus on whatever I like and respond on my own time. This wouldn’t be possible with a phone call. While it would be possible with text messages, I find myself much more efficient with a full size keyboard and the ability to change windows to catch up with a conversation rather than pulling out my phone constantly. It also makes sharing links easier.
The services are even more convenient now that there is a mobile client for Google’s IM services. This allows a user to continue a conversation on-the-go, rather than being forced to end it if he or she is simply leaving the computer for a brief time.
However, the two services don’t seem to work together flawlessly. When I am working on two machines at once (laptop next to my desktop), it is easy to see how Gmail’s chat function handles the user having two instances of chat open at once: It determines which is being used currently and minimizes the message boxes on the secondary instance while still sending messages to both. Additionally, when the user ends a chat session, it removes the box from both instances of Gmail.
I have noticed while using the mobile client, that sometimes messages don’t get routed to it and instead end up still on the browser based client. Furthermore, when the chat does route to my phone, messages are sent only there and not back to my PC in addition to the phone. To ensure I don’t miss a message, I can always check the chat logs Google provides. However, to do this on my phone, I currently have to exit the chat client, open the Gmail app, and go into my chat history. The Google Talk mobile application would be significantly improved just by adding access to Gmail’s chat logs within the app.
Froyo for the Droid Incredible
Recently, the Droid Incredible finally got the newest revision of the Android OS, 2.2, codename Froyo. I couldn’t wait to receive the auto update from Verizon, so I found the update file on the web and manually ran the install. I didn’t really like hearing about the update months ago and having little idea on when I would receive it even up to a couple weeks ago.
I can say now that it was worth the wait.
Google did an excellent job with added features like Chrome2phone (see below), and HTC took the opportunity to improve some of the features in its Sense overlay for Android.
Overall, my phone just feels faster now. From swiping between home screens to web browsing, it seems like every action has been sped up. I use Dolphin Browser HD for viewing websites and opening new tabs has been sped up so much that I didn’t realize they were opening at first. I literally opened the same tab several times thinking something was wrong before noticing I had five identical tabs. I was expecting opening a new tab to slow down my browser as it did before the update. Now that there is no pause, I wasn’t sure if the tab had actually opened. One of the biggest improvements in speed I have noticed is trying to ‘share’ a website. Previously, when I would touch the ‘share this website’ button, I would have to wait anywhere from 2-5 seconds. Now, though, I am almost instantaneously allowed to choose how to share the article. Combined with Android2Cloud*, I can send a site to my computer in about 2 seconds. Previously, I would have to wait for the share graphic to load then type in my email address to send it to myself, which took about 10 seconds.
In addition to the improvements in speed, both HTC and Google have provided a significant number of new features. Google’s Chrome2phone allows users to send websites from their desktop or laptop to their Android device. I have noticed that to save the link, you have to open the link when it gets sent to the device. It would be nice if the C2P app on my phone saved the last 5 or 10 links sent. Another great feature Google has added is the ability to update all apps at once and the ability to auto-update applications. One of the most publicized additions to Froyo is Flash. After the initial novelty wore off, I was unable to find any great uses for Flash on my phone. My first stop was Robot Unicorn Attack, but I was unable to find a way to bring up the keyboard to use solely for the game. I haven’t found any pressing uses for flash in the few weeks I’ve had the update.
One improvement I’ve noticed from HTC is for the keyboard as well as other apps that have a landscape mode: they can be in landscape in either direction on the phone. Previously, landscape only worked when the phone was tilted toward the volume controls. Now it works when tilted away from the volume controls as well.
In addition to flash, animated GIF images run now as well. Before the update, I could see an image of the first frame of a GIF, but the animation would not run.
HTC fixed their photo album app as well. Before the update, it would require me to select the album I wanted to display every time I took a picture. Now, it seems to update by itself to the latest photo I’ve taken, which is great. Kudos to HTC for taking the update opportunity to fix some of their bugs.
On the downside, my battery seems to drain a bit faster. I would like to note that I don’t browse many (if any) flash heavy sites. I also have flash set to only load when I touch the flash frame, so I don’t think flash is the cause. My battery still lasts through the day, and I could be wrong, but after some consideration, it seems to drain a bit faster on average. If anything, I definitely don’t notice an increase in battery life, which I was hoping for with the new software.
Finally, Google updated the Google Voice app shortly after Froyo released. I thought this would speed up the app and fix some problems I’ve had with it. Notably, it keeps a stack of every text you respond to. If you are responding to multiple friends and enter the program from the notifications bar, you can end up with a stack of many texts so that when you try to use the ‘back’ button to get out of the app, you end up tracing through that entire stack. I was hoping the update would alleviate this problem. Not only did the update not fix this problem, the application now seems less responsive overall. Several times I’ve tried to access the app, it has taken several seconds to load, which I haven’t noticed with any other app.
Overall, I am incredibly happy with the Froyo update. The minor problems I’ve had are more than made up for by the improvements and additions. Now I just can’t wait to here about Gingerbread.
*Android2Cloud is a new app that is the reverse of Google’s Cloud to Device messaging API. While the official Chrome2phone app sends sites from the web to your Android device, Android2Cloud performs the opposite task. I find myself sending long articles to my PC far more often than I find myself sending websites to my phone.
CS106B and the Google AI Challenge
CS106B
Looking back on my latest blog posts, I realize that most are addressing flaws in software that I use regularly. When I began this blog, I hoped to use it to focus my efforts in becoming a better software developer. Analyzing design choices in software does that to some extent, but I need to be creating more in order to improve.
One problem I’ve had with creating software outside of work is a lack of focus. By this, I mean I want to create a lot of software and learn many tools. Examples: Creating mods/new levels in new PC games with editors, creating Android apps, going through some of the most well recognized books in computer science, taking free online courses in CS, and so on. I have done each of these to some extent, but now I would like to focus solely on one (I have failed at this already, see Google AI, below). I believe this will allow me to learn more in the span of a few months than trying to do all or some of these projects concurrently and not getting very far in any of them.
Before the end of the year, I intend to complete Stanford’s CS106B, a data structures and algorithms course from Stanford Engineering Everywhere. My main focus will be on the seven major programming assignments. I will likely be looking at the section assignments for a limited amount of time before looking at the answers in the interest of keeping progress moving.
I am hoping that by focusing on one project for programming outside of work, I will be able to delve deeper into that project and hopefully discuss it here to see how it impacts me as a developer. Currently, I am finishing up the second major assignment. While my progress is a bit behind where I would like, I am consistently working a bit each day on this. So despite my progress not being outstanding, I am quite satisfied with my consistency.
Google AI
I can’t remember where I saw it but a couple of weeks ago I saw a link introducing Google’s AI Challenge for this year. I haven’t done much yet, but I’m working with a colleague to come up with an entry for the contest. Neither of us are particularly skilled in AI development, but we are both excited to see how we can do in this competition. The competition lasts just a little over two months.
I won’t be able to discuss our top secret strategy until the competition ends, but the AI contest and CS106B should provide some interesting topics for the remainder of the year.
How To: Fix TightVNC After Moving
While I don’t use VNC to log into my home PC very often, it is a nice convenience to have if I want to check something on my home PC while I’m at work or out of town. I recently moved to a new apartment and upon getting my PC set up (before the furniture, naturally), I saw that TightVNC no longer seemed to be working. I tried a few simple fixes, but with no pressing reasons to use VNC, I put off setting it up.
Last night, I become determined to fix it for no apparent reason. After trying to disable the Windows firewall (which I promptly put back up), I got frustrated again. I considered that maybe I was missing something simple, so I asked a tech-savvy friend* if he could think of anything. This morning he got back to me suggesting that my router might be blocking the ports that need to be accessed. I knew this was wrong because 1) I did that when I set up AndroidVNC, and 2) I had checked it after the problem arose. His advice did, however, make me realize that I had not tried taking the router out of the equation to make sure it wasn’t the culprit.
To test whether my VNC server was working or not (since I had to unplug my wireless router), I used GoToMyVNC. Without the router, I was able to get a connection on GoToMyVNC. Clearly, the router was the culprit. I decided to simply retrace my steps through the VNC set up I outlined on my blog for AndroidVNC (see above) to see if something had changed with the move. Turns out, my local IP address (on the router) had changed by 1. I corrected this and now I’m back in business.
I wanted to post this mostly to show that, for the first time, blogging has helped me by having steps to retrace without having to redo the research for a simple project.
*Thanks, Nigel
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 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.
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.
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.
