Android Apps for Playbook, and Living Fridge

The Playbook has been widely criticized ever since the first models were released. I’ve noticed that many of those criticisms dissolve when you lower the cost of the device to free; the Playbook does all the things I want a tablet to do, and it does them quite well. (I won one through the Blackberry developer app contest.)

Even if the Playbook hasn’t captured the hearts of reviewers, its future holds an element of techy curiosity: RIM says Android apps will run better on the Playbook than they will on Android devices. The Android App Player will act as a virtualization layer, allowing the Playbook to run Android apps; however, Android developers will first have to submit the apps to the Blackberry App World (as they say, he who controls the distribution channel…). The claimed increase in performance seems to be due to handwavium so far, but the App Player has been in testing mode for months, so I guess we’ll just have to trust them.

I’ve dipped my toes into the waters of the App World myself: my brand-new release, Living Fridge, is a simple app to prevent your fridge from being taken over by monstrous moldy creatures. Or it will help you stop wasting food… whichever is more important to you. There’s a bit more about it, as well as screenshots, on the Living Fridge app page.

Posted in Compute | Leave a comment

Connecting to MS SQL Server from Ubuntu

And now, in a break from the previous trend of fluffy posts, we have a tutorial on how to (deep breath): connect PHP to a MSSQL Server 2008 instance over ODBC from Ubuntu Linux using the FreeTDS driver and unixODBC. Theoretically it would also work for SQL Server 2005.

I don’t know whether half of the settings flags are necessary or even correct, but what follows Worked for Me™, YMMV, etc, etc.

In the commands below, I’ll use 192.168.0.1 as the server housing the SQL Server instance, with a SQL Server user name of devuser, password devpass. I’m assuming SQL Server is set up to listen on its default port, 1433. Keep an eye out, because you’ll need to change these things to your own settings.

First, install unixODBC:
sudo apt-get install unixodbc unixodbc-dev
I also installed the following (perhaps necessary) packages:
sudo apt-get install tdsodbc php5-odbc
Then download, untar, compile, and install FreeTDS (warning, the URL may change):
cd /usr/local
wget http://ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
tar xvfz freetds-stable.tgz
cd freetds-0.82
./configure --enable-msdblib --with-tdsver=8.0 --with-unixodbc=/usr
make
make install
make clean

Attempt a connection over Telnet to your SQL Server instance:
telnet 192.168.0.1 1433

Use the tsql tool to test out the connection:
tsql -S 192.168.0.1 -U devuser

This should prompt you for the password, after which you can hope against hope to see this beautiful sign:
1>

If that worked, I recommend throwing a (coding) party. Next up is some configging. Open the FreeTDS config file.
/usr/local/etc/freetds.conf

Add the following entry to the bottom of the file. We’re setting up a datasource name (DSN) called ‘MSSQL’.
[MSSQL]
host = 192.168.0.1
port = 1433
tds version = 8.0

Now open the ODBC configuration file:
/usr/local/etc/odbcinst.ini

And add the following MSSQL driver entry (FreeTDS) at the end:
[FreeTDS]
Description = FreeTDS driver
Driver = /usr/local/lib/libtdsodbc.so
Setup=/usr/lib/odbc/libtdsS.so
FileUsage = 1
UsageCount = 1

Then, finally, set up the DSN within ODBC in the odbc.ini file here
/usr/local/etc/odbc.ini
By adding this bit to the file:
[MSSQL]
Description = MS SQL Server
Driver = /usr/local/lib/libtdsodbc.so
Server = 192.168.2.3
UID = devuser
PWD = devpass
ReadOnly = No
Port = 1433

Test out the connection using the isql tool:
isql -v MSSQL devuser 'devpass'
If you see “Connected!” you’re golden, congratulations! If not, I’m truly sorry; see below where there are some resources that might help.

Now restart Apache and test it from PHP using ‘MSSQL’ as the DSN. If something doesn’t work, you might try installing any or all of these packages:
mdbtools libmdbodbc libmdbtools mdbtools-gmdb

Here are some other resources that were helpful to me through this disastrous journey.

Posted in Compute | Leave a comment

Flattened Email

Recently I’ve been thinking of services like Google+ and Chatter as flattened email. A post on one of those networks is quite similar to an email that you send-to-all, and to replicate email in Google+, you can simply make a post private between you and another person. The differences, then, lie in your interface to the conversation. This interface has profound effects – just think if you had to click the subject of every post on Google+ to open it for reading, then click back out of that post to see the stream again. Would that change how you used it?Email is peaked, Google+ is flattenedEmail shows you the tip of each iceberg, whereas Google+ flattens them out and shows you the whole chunk at once.

We could say that Google+ and email are merely different interfaces to the same core features. Email is an efficient way to get an overview of all of your active or recent conversations, since it hides most of the content. Google+, on the other hand, splays it all out in front of you, which makes access to threads from further in the past more difficult, but makes interacting with recent content much easier.

Flattened-email products, which seem to be on the rise, tend to focus on the now, and less so on the ease of finding a conversation from the past, or storing it for reference. These problems will need to be dealt with quickly, or flattened-email will end up having usability problems that are different than, but equally maddening as, those that email has today.

Posted in Compute, Human/Computer Interaction | 1 Comment

Thoughts on Google Plus ∩ UX Design

The enthusiast quickly discovers that new social networks like Google Plus are not interesting for their explicit, outlineable featuresets, but rather the subtle, practically indescribable usage-guidance that each included element of design provides to the user.

These affordances not only enable or discourage communication in each area of the site, they also help shape the more “fluffy bits” of writing, from the length of content to its mood – how playfully, introspectively, or authoritatively one speaks.

And these subtle affordances are what takes longer to grok. This explains why it takes a mere five minutes to use every feature of Google Plus, while the great technologists of our day have spent days “playing around” within the network – and we must use a kiddish phrase, because we don’t have the words to describe the type of familiarity we gain from sustained usage of a website, rather than quick perusal.

And so, welcome to the world of interaction design. One wonders why those roles are so hard to describe comprehensively – it’s because their raw materials are, instead of concrete and steel, hints and hooks into the subconscious.

Sure, to many, the only apparent business of the UX professional is in building bridges out of pixels. But their real challenge is building those bridges in such a way that the people driving can’t help but to buckle their seatbelt, or tune in to FM 90.1, or start craving ice cream.

Posted in Compute, Human/Computer Interaction | Leave a comment

The idea for this came to me, spurred by absolutely nothing, on my drive home (exactly at the exit from 75 S to 85 N, if you must know), and, humbly, I thought it too clever to pass up.

no-hint-here

Posted in Compute | 1 Comment

Most Common Navigation Fonts

I did a quick font check on some of Alexa’s top sites to see what the consensus was for navigation fonts. The results are below for the curious and for my own future reference, showing the most likely fonts to be displayed on a Windows machine. If they weren’t Arial or Verdana I listed the fallbacks.

  • LinkedIn: Arial 13px
  • Flickr: Arial 13px
  • PayPal: Arial 12px
  • Microsoft: Tahoma, Verdana 11px
  • IMDb: Verdana, Arial 13px
  • BBC: Arial 12px
  • WordPress: Arial 14px
  • Facebook: Lucida Grande, Tahoma, Verdana, Arial 11px
Posted in Compute | Leave a comment

How to Rename Google Maps Starred Places

Recently I’ve been looking for a way to rename the Places I have starred in Google Maps, since that feature was yanked from the Blackberry Google Maps app. It turns out your Google Bookmarks page lets you do this; there, you can rename whatever entries you like. This makes my places with stars much more useful — I can change unintuitive titles like “1175 Peachtree” to something like “PHP Meetup.”

Posted in Compute | 5 Comments