Archive for August, 2008
Future of web interfaces and the RESTful world
Over last month or so I’ve spend most of my time designing interfaces with my business partner. Basically we take on a screen and attempt to design a web page that we think would service us and our customers. In general we follow the rules (generally, we are not that strict about it).
- The page should make what ever the user does 90% of the time dead obvious how to do.
- The page is not finished when we stop adding features to it, it is finished when we stop removing features.
- Keep it simple and clean and never over clutter the page.
In theory we feel following these rules we will design and implement very simple to use clean interfaces for our features. There are however the following constraints, mainly imposed on me/by me. I am a technical director of the company while my business partner is a managing director, so technical restrictions mainly fall on me. So here go the restrictions.
- The application is written using Ruby and Ruby on Rails web framework, so I’ve decided to make the application RESTful. This means navigation and pages where ever possible follow the RESTful principles.
- Do what can be done on client side on client side. I use JavaScript and prototypejs library to do most of the client side work.
- Keep it simple and clean and never over clutter the code.
So now, we have been happily designing our screens, and while they have some nice JavaScript features, at the end of the day most are forms, lists, etc. I feel happy for this to be the interface for version 1 of our product (which is a web based application), but deep down, I hate standard looking view (list/grid), edit/add (form) web pages. Like with most things we do, I ask a question, is there a better way. Now, I am not going to blame REST for anything, but it does make it easy to follow the pattern of list/form design, especially within Ruby on Rails.
Have a look at the following video. The video shows a concept of using a shadow/hologram that follows you around and is basically an interface into your mobile phone, music player, GPS, etc..
Ringo, the interface shown in the video above is developed by a guy called Ivan Tihienk. I love the concept and would love to do something like that for our application (ok, running in a browser). The idea of me attempting something like that would mean having to learn something like Flash or Silverlight, or attempt to do it in JavaScript (which I think could be possible).
Since I write applications for people, to be used by people, to me the interface is the most important part of the application.
Trying to get a startup off the ground while consulting %60 of the time to pay the bills is hard, and its hard simply because I feel I can bring many more ideas to fruition, simply if I had more time. So step one is to get the startup profitable and then allocate time to play with REST, interfaces, Ruby on Rails, not for building applications, but to enhance these great technologies to offer more for humans who use them (unknowingly most of the time), not humans who use these technologies to write applications.
No commentsUbuntu, Sun VirtualBox and bridged networking
I am running VirtualBox on my laptop (host OS is Ubuntu Hardy). Currently I use VirtualBox to run a Windows Vista Ultimate guest OS (for all those times when I need windows).
One annoying thing about VirtualBox is that it does not give you an easy way to setup a network bridge like vmware does. So after digging around the web I found the following script does the job nicely.
-
#!/bin/shUSERNAME=user # login name of HOST system
-
DHCP=0 # set to 1 to use dynamic ip for bridge
-
IP_ADDRESS=192.168.0.4 # static ip address of bridge (only used if DHCP set to 0)
-
tunctl -t tap1 -u $USERNAME
-
brctl addbr br0
-
ifconfig eth0 0.0.0.0 promisc
-
brctl addif br0 eth0
-
if [ DHCP = 1 ]; then
-
dhclient br0
-
else
-
ifconfig br0 $IP_ADDRESS
-
fi
-
brctl addif br0 tap1
-
ifconfig tap1 up
-
chmod 0666 /dev/net/tun
This script must be run with elevated privileges (sudo). Since I connect to different networks at home and at work (home uses static IP, work uses DHCP), I created two scripts, one for home and one for work. Within Ubuntu I use wicd as my network manager and it has the ability to run scripts before/after connect, etc… but I can’t seem to get it to execute the above script automatically when I pick a profile, so for now I have to run the script manually.
3 comments