Tuesday, December 30, 2008

The Command Line

It's only scary because we make it scary. It's the most powerful interface we currently have with our machines, the predecessor of the phonetic shell, of voice controlled interfaces.

It doesn't have to be. It shouldn't be.
I love the command line, but frick, do I hate unix.

Don't get me wrong. POSIX is great. It's on my list of requisites for operating system consideration-- but why in hades do END USERS _ever_ get exposed to it?

An online acquaintance of mine from Argentina made a nice little 'urip' utility that turns youtube links into audio files on your desktop. I'm his primary tester, and today we talked a little about command line arguments. An excerpt:

leo_rockway: I could check if the non regex matching "thing" is either -g or --ogg
ethan: what does -g do?
leo_rockway: converts to ogg/vorbis
ethan: ....
leo_rockway: didn't you just read the help?
ethan: but that's what --ogg does
leo_rockway: that's the long argument
ethan: is that how it's done?
leo_rockway: there's always a short and a long argument
leo_rockway: yup
leo_rockway: just man any command and you'll see
leo_rockway: man ls
leo_rockway: -a, --all
leo_rockway: do not ignore entries starting with .
ethan: funny thing there....
ethan: you know what
ethan: if you're going to bother with human readable arguments
ethan: drop the silly --
ethan: -a, all
ethan: list all
ethan: ls -a
leo_rockway: *shrug*
ethan: start a new, more efficient convention, if you can
ethan: urip ogg $URL
ethan: can it be done?
leo_rockway: yes it can
ethan: :)
ethan: think of the usability
ethan: ;)
ethan: when I'm giving my mom instructions over the phone....
ethan: 'install urip'
ethan: 'urip ogg $URL'
ethan: 'sudo apt dash get install urip'
ethan: 'urip dash dash ogg $URL'
leo_rockway: kill dash nine!
ethan: 'murder firefox'

Another excerpt, this time from my ~/.bashrc:

# system command aliases
alias list='ls'
alias delete='rm'
alias DELETE='sudo rm'
alias frigging='sudo'
alias install='sudo apt-get install'
alias uninstall='sudo apt-get remove'
alias check-update='sudo apt-get update'
alias update='sudo apt-get upgrade'
alias murder='sudo killall'
alias get='wget'
alias GET='sudo wget'
alias enter='cd'
alias up='cd ..'
alias home='cd ~/'
alias unmount='umount'

function remove () { mv "$@" ~/.local/share/Trash/files; }
function REMOVE () { sudo mv "$@" ~/.local/share/Trash/files; }

Ubuntu may want to be linux for human beings, but I don't know what everybody else is doing. I don't think we can stay on the same path and accomplish what we're setting out to do.
The command line is a cryptic disgrace because we seem content to leave it that way. Fixing this may require patching just about every application in the Ubuntu operating system, but hey, if it can't do that, what is bzr for again?

Saturday, December 27, 2008

Corner Case

Hi, I'm the corner case. I'm the guy you always leave out in the cold, the one you say is crazy. I do things with your software you never thought anyone would attempt. I innovate, I drive progress, and yet you shun me, ignore me, tell me what I'm doing isn't 'supported'.

I'm the one sending SMS, facebookchat messages, and tweets from pidgin. The one claiming that window-picker-appet is the savior of the gnome desktop. The one who made that dual seat rig with userful and pulseaudio. I'm the guy who uses gnome screensavers as my desktop background.

I run into your odd bugs, the ugly ones you hope no one will ever see. I submit the feature requests that put that silly, confused look on your face. I know where your project is going, I know its destiny. Please, listen to me--

I'm the corner case.

Just Works

Digipro drawing pad users of the world, unite.


Let's make these things Just Work in 9.04.
fabrice_sp is helping me with basically all of my packaging at this stage, we have one we're working on for the wizardpen. The idea for the end result is this:
a .deb file with the drive in it, and a postinstall script that goes as follows:

'please unplug your drawing pad and hit enter.'
grep -i name /proc/bus/input/devices
'pleas plug in your drawing pad and hit enter.'
grep -i name /proc/bus/input/devices
(the second time the command is run, there should be one additional result.)
Take that result and add it to /etc/hal/fdi/policy/99-x11-wizardpen.fdi, which needs to contain some other basically static xml, but I don't know how to post it here..

What would be /really/ nice of course is if the driver was included in main, and could recognize all the different wizardpen drawing pads and make them all Just Work; that is the end goal here, and we need all the help we can get. I hope the wacom folks have it better than this..