Friday July 14, 2006 Don't Write on the Backside of Paper (2)
Last April or so, I blabbered about 3D desktops. Today I find a prototype: BumpTop. Thanks, Canadians, that was quick. "But oh, you, like, forgot the file names! :p"
Of course this prototype is still far from being useful, but I think it doesn't hurt to experiment with the idea. One needs to start somewhere. If it at least results in a one nice photo browser or something I would already consider it success. Maybe over time, the idea refines and develops, who knows. I mean, come on, somebody must be able to come up with something. Whatever it will turn out to be, it will be named Sun Java Cubeform Third Dimension Plug-Around Module Pack for NetBeans ID3. Or maybe — 3Doogle.
Oh. Wait. I am suddenly worried. About support phone-calls. And written documentation. Hm... The more intuitive and less textual interfaces get, the more difficult it gets to describe an interaction in words... 8-| Neglecting the fact that you shouldn't, it's easy to explain to a beginner on the phone how to type in "R M blank minus R F blank star, now press return-key". And yes, sure, the most unspeakable mouse gestures will eventually be given handy names, in much the same way as complex facial gestures were given concise names like LOL, Argh, or Duh. But still — do you want to be the guy explaining correct mouse gestures to the panicky businessman who just accidentally swished his live's work into the dark little hole in the corner of the screen where the screensaver lives? Well?? See! *shudder*
Posted by seapegasus ( Jul 14 2006, 12:52:20 AM CEST ) Permalink Comments [3]Embedded HTML Editor for Bloggers and Wikians
Now that's a cool firefox plugin if I ever saw one, Xinha! -- A WYSIWYG HTML editor embedded in your browser. Very useful for bloggers and wiki writers who use HTML. (Some wikis do.) You install Xinha! from addons.mozilla.org, and after it's loaded (restart the browser) it's accessible in the context menu of each text input field of your browser. Like this text input field I use right now to type this blog entry. So I right-click, and I can choose to open the Xinha Editor in either its own window, or in a frame at the bottom of the webpage I am working on.
If the text input field already contains some text, Xinha copies it over into the Xinha buffer, where you can edit it in a basic HTML composer GUI. The GUI even has skins. Tsk. ;-) After you made your edits in the textfield, scroll down to the Apply button (I didn't find it at first) and this will copy the Xinha buffer as html into the text input field.
Note that each Xinha seems to be tied to the textfield you open it for! This is important. So when you tab to another page, and keep using the same Xinha window, your changes will be pasted into the original text field, and not the one in the tab you happen to be looking at right now. Also, if you reload the page (e.g. for saving changes while blogging every 5 min or so), the Xinha window does stay open, but seems to lose the connection to the new instance of the textfield. Keep that in mind when using it.
Pretty impressive idea! It would be perfect if it wasn't for one display bug: In my Linux Firefox, the Xinha frame buffer blinks and moves around constantly while redrawing. Twice per second. Pretty annoying, but I hope that will be fixed in future versions. Try it! :)
Posted by seapegasus ( Jun 28 2006, 08:01:31 PM CEST ) PermalinkDoes Your GUI Clack or Rattle?
OK, here is my brainstorming about what Karsten Lentsch said at JavaOne about Swing GUI Design Dos and Don'ts. He had a weird kind of dry humor that made the audience laugh while he kept a straight face. Oh and I will also sum up what he said about the NetBeans GUI builder Matisse in this context.
In Matisse he saw a great step in the right direction (e.g. it nicely aligns to fontbaselines), but he pointed out some weak spots: Matisse lacks guided alignment of components in multiple panels/windows/components, and it allows aligned components to have different heights. (When I'm back I need to try whether InterfaceBuilder can do that?) So don't count on a tool to do all the thinking for you.
So why are all these aesthetics relevant? Isn't the tool's function way more important? Unfortunately, humans tend to interpret good looks as health, and balanced GUI design as clear bugfree programming... Just flip the coin: If the GUI looks brittle, confused, clumsy, careless, users will have prejudice against it: "What is this klutz tool going to do with my precious data?" Oops, just lost a customer.
I'm well aware there are "ugly" but popular applications, but these often merely lack professional graphics, while their layout is intuitively clear and easy to use (and that counts).
Amok running robots at JavaOne
How cute, a silver iMac on wheels in the JavaOne pavilion! Oh wait -- that's Tommy? Let's see what this egg on wheels is up to: Luckily, there were still empty seats in the "A robotic dune buggy named Tommy" session. (The alternatives would have been a session on AJAX, and one on Swing animations, still, Tommy's session was a good choice. There'll be other AJAX stuff). This technical session covered the DARPA grand challenge of Oct 2005. The challenge is a forum for building and testing real robotic vehicles, the winner receives an appropriate financial reward. The experience gathered will later be used for military, personal or professional purposes, for example, military surveilance, the handling of dangerous objects, or work in live-threatening environments. They say. Or maybe they just want to play with robots.
The challenge's goal is briefly to create an autonomous vehicle that can (for starters) travel through a desert and reach a target without any human intervention. Remember the Mars buggies of late? A planet's surface is not a German freeway. Every step has to be planned, discussed with ground control (radio signals from Mars can take something like 15 minutes), and then the step has to be taken slowly and carefully, or it'll be their last. But the DARPA challenge is different, as the vehicle has to complete the task at "mission-relevant" speeds, too. When the first grand challenge was held, even the best robots got stuck after 10km. But in the following years, the winners already managed to cover the whole alloted distance. On the other hand, each year a random number of great brave robots crashes, burns, or simply bails out during the first few meters -- it's by far not a trivial task, as we will see later.
Tommy is a cool retro-looking silver egg-shaped vehicle. He seems to be propelled by gas like a car and is pretty DIY, thanks to the team-members' enthusiasm and dedication. In the design phase (going from cardboard-box-sized to increasingly bigger robots) redundancy was already an essential part of the plan. You never know when one or the other signal doesn't come through. And, to be honest, you could count on the DARPA choosing a terrain that was not fully covered by the conventional global positioning system (GPS), just to make the game more interesting. So the Perrone team made sure to equip Tommy with a triple redundant navigational system: Two high-resolution GPSs (one beacon- and one satellite-guided), plus a lower-resolution standard GPS. Additionally, Tommy got two kinds of radars and lots of outside sensors, as well as internal state sensors. All that was orchestrated by one microprocessor that could make decisions and send them to the actuators (the motors and wheels that make the vehicle speed up, slow down, break, or turn).
The software used was a general purpose Java-based robotics platform, "Perrone MAX", if I remember correctly. Basically, you have threads running that are triggered by certain cofigurations of sensor input and internal state. Tommy's got a kind of artificial intelligence, pre-defined rules that allow him to make quick and good choices. The AI does not involve any machine learning however, the rules are hand-coded in Java. Some jinxers may claim, neither the Java Standard nor the Micro Edition would really scale to this kind of task -- so just to prove them wrong, Tommy's software uses both: Java ME and Realtime Java SE. Realtime means, that processes have a higher priority even over the garbage collection processes. Garbage collection slows down importantant realtime actions by milliseconds, a delay that you could cope with during a game of Minesweeper, but not when your autonomous robot is trying to defuse an actual bomb. Thanks to Java (and NetBeans IDE, woot!) :-) Tommy fulfills his demanding tasks happily with one microprocessor, and they detected no performance bottleneck what-so-ever. After his "training", Tommy was able to complete several tasks, among other things:It should be internationally outlawed and illegal to delete files after more than eight hours at work. Especially, the rm command should check the local time and say, Sorry dude, you're no longer certifiably sane, and no, the fact that you are still able to type :%s/smf/and/g into vi doesn't mean your wide awake, it means you're too tired to spell "and" correctly. (In my own defense I have to add that this is only a made-up example.)
But the following really happened -- I just deleted the directory I was working in. *BONK* I mean, there was a lot of stuff taking up space on my harddrive, and I just thought, hey, it's cvs, I can delete it locally, right? Just maybe I should have skipped deleting the dir I had checked out and just had started making changes in. Changes I had not yet commited back to cvs yet. So what to do?
Not to worry! Luckily, it was only two HTML files, and when I work with HTML, I usually keep a browser preview of the local file I'm working on. The files I deleted were still open in the browser. So just save them and I'm fine, right? Problem is -- the browser doesn't save from its cache. It tries to access the real thing before saving. Which didn't exist anymore.
Let's try something else. I can select the text in the browser and copy&paste it into a text document, but then I'd lose all formatting. Well -- better than nothing anyway. Luckily being tired doesn't only make you think in strange ways that make rm -rf look like a space-efficient backup command. Sometimes being tired is good for lateral thinking: Is the formatting really not preserved in the clipboard? What would happen if I paste it into an HTML editor? Only, since I hardly ever use an HTML editor, I couldn't think of any. Hmmm. My very first webpage I think I made in Netscape Composer. Netscape doesn't exist any more. Probably got accidentally deleted after seven. So let's try 'mozilla'. Lo and behold, my Fedora has mozilla installed. And even loer and beholder -- it still works exactly the same as netscape! Just choose Composer from the Windows menu and you have at least some HTML editor. I paste the clipboard and ta-daa -- my file is back in all its HTML glory. Composer didn't even get time to insert its annoying 'compliance' tags. :-p I only lost the meta tags, but they are easily restored.
And the moral of the story: Not only backups, but also caches, clipboards and old Composers can be your friend.
Posted by seapegasus ( Mar 21 2006, 08:31:22 PM CET ) PermalinkHow to Make Thunderbird Display Mailinglist Digests
I finally left Evolution Mail behind -- it crashed several times a day as response to simple actions like copy&paste or drag&drop. It also choked on long emails and died several times just formating a mailinglist digest message. I had to kill it the hard way, and as soon as it came up, quickly click another mail folder, otherwise it would fall into this "but I'm not finished formatting yet" trap over and over again.
Instead of Evolution, which I was using mainly for its calendar function, I switched to Thunderbird + kOrganizer for the calendar. Thunderbird behaves and is nice and searches through messages fast, no complaints up to now (I have been using it for one or two weeks now). kOrganizer's alarm (as opposed to kOrganizer itself) is confused about the time and date however, and its preferences pane shows up empty, so I can't set it... I assume I could fix the alarm by logging out or rebooting, but I do that so rarely in Linux that it just hasn't happened yet.
I'm signed up to the digest version of nbusers support list, a really active list which was growing annoyingly hard to read in Evolution. Then in Thunderbird, I was in for a surprise -- It didn't display the digest's content at all! What kind of mail client is that, if it only lists three millions attachments but skips the content? None of the settings (like "view inline") would change this behaviour.
By chance I found a solution today in a forum thread where somebody asked why his "Attachments fill up the Window". So that's what is happening! It doesn't skip the content, just the pane that lists all the attachments (which can be quite a number in a digest) is not set to scroll, but takes up the whole window instead, so the mail content is below the threshold without any scrollbar... I consider that a minor bug in the choice of default settings, but anyway, I found the solution:
Edit or create the file ~/.thundebird/yourprofile/chrome/userChrome.css and add the following lines (65px is just an example that worked for me)
#attachmentView {
max-height: 65px !important;
overflow: scroll !important; }
That's it -- the attachment list shrinks to a more handy size, and the content pane is fully visible again. And now I have about 10 digests left to read... Argh!
Posted by seapegasus ( Jan 23 2006, 06:44:04 PM CET ) PermalinkDoes Text-Only Nostalgia Pay Off?
Can anybody please come up with an explanation for this phenomenom? (other that coincidence, paranoia or selective perception, please. ;-) It is quite reproducible) It's freaking me out.
In Linux, I keep a sticky xload open to monitor my CPU load. Sometimes, an over-eager application takes up all the memory, causing everything to slow down to a halt, until the app crashes and Linux returns to normal behaviour. (Positive Thinking: At least all other apps and the OS remain stable...) Well, everytime this happens, I immediately see the value rising steeply in xload. I sigh and watch the GUI growing less and less responsive while the load habitually goes up to 20... 30 over a minute or two, until Linux finally realises it's hopeless and kills the amok running app.
Sometimes in this situation I switch over to the text terminal with ctrl-alt-F1. Even with a high load, it feels much more responsive since it does not have to bother about drawing a GUI. I run top to watch what's happening -- and never do I see the load rising.
What's going on here? When I stay in the GUI, Linux is pissed and the load rises like phoenix with his rump on fire -- when I switch to the text terminal, Linux suuuddenly feels flattered by nostalgia and condescents to kill the swapping app immediately, causing the load to drop? Is this a feature?
Posted by seapegasus ( Sep 19 2005, 01:41:30 PM CEST ) Permalink Comments [2]Oops. The Open Source guru Eric S. Raymond claims to have received a stray standard recruitment email from (ta-daa!) Microsoft?!
As you can imagine, those are the things in life that really get a hacker's "RAM swapping", so he bleats back the second most spiteful reply since Monkey Island... o_O
Posted by seapegasus ( Sep 13 2005, 10:50:50 AM CEST ) Permalink Comments [1]In Windows and MacOS, you can create handy desktop shortcuts to access files and directories whose paths you never are able to memorize. In MacOS, such a shortcut is called alias. In Linux, shortcuts are called symbolic links (symlinks); they are created using the terminal command ln. Some use cases:
Simplest case: You want to create a symlink to/long/path/to/dir/myfilein the current directory and give the shortcut the same name as the original (myfile), then you type
ln -s /long/path/to/dir/myfile
To create a shortcut to/long/path/to/dir/myfilein the current directory, but set the shortcut's name tomyShortcut
ln -s /long/path/to/dir/myfile myShortcut
All together now: To create a shortcut to/long/path/to/dir/myfilein the directory/path, and set the shortcut's name tomyShortcut
ln -s /long/path/to/dir/myfile /path/myShortcut
ln:ln -s option, you get a symbolic link, without it, you get a hard link to the file or directory. If you want a Windows-style shortcut it's a symlink, so you must use the -s option. Symlinks are clearly marked and can be deleted without the original being touched. But beware, if someone deletes The One Original(tm), all of the symlinks will irrecoverably break! unlink command on the one of the hard links that you do no want to keep. Be careful when unlinking the last instance of the file, or when unlinking a normal file: Unlinking will quietly remove these files without any warning! (Actually, they are still on you harddrive, but you won't be able to find them anymore...)rm command. If you should get the error message "rm cannot remove directory", do not out of a habit use rm -rf mySymlink/* on a symlink to a directory, because that will delete the original's content! Instead make sure not to end the symbolic link's name in a slash when removing it. (You may get a slash in the end if you let the shell complete a link to a directory by pressing the tab key). ln. :-) It's actually the same order that cp and mv use: First the source, that's the existing file or directory where you want the link to point to, then the target, that's the shortcut's name. If you mix up source and target, you create a useless link pointing nowhere inside the target directory (or you get an error message). Confused? Just keep one thing in mind: The first argument must be the source — because specifying the file or directory to link to is obviously mandatory. The target, however, is second, because it's optional — if you don't supply it, ln can just use the original file's name and place the shortcut in the current working directory by default. ls -l. This will clearly mark symlinks with a small letter L at the beginning of the line and a little arrow after the name plus the path where they point to. Posted by seapegasus ( Sep 07 2005, 11:47:30 AM CEST ) Permalink Comments [7][jane:~]> ls -l
lrwxrwxrwx 1 jane users 65 Aug 15 15:19 myfile -> /long/path/to/dir/containing/the/original/myfile
lrwxrwxrwx 1 jane users 65 Aug 19 11:59 myShortcut -> /long/path/to/dir/containing/the/other/myfile
-rw-r--r-- 1 jane users 3471 Sep 1 11:22 just_some_normal_file.txt
-rw-r--r-- 2 jane users 763 Aug 24 17:14 split_personality_one.txt
-rw-r--r-- 2 jane users 763 Aug 24 17:14 split_personality_too.txt
Evolving Migraine from 'Evolution' Migration
(or “Cut out the stupid puns and fix my Linux pleeease!”)
Since working in a mounted home directory was slowing things down, I decided to move to a local home dir instead. Usually you can migrate apps in Linux by simply copying the old dot-files to the new location before starting the app there for the first time.
Not so the Evolution mail client. Only my mail is there (which has cowardly been camping up on the IMAP server and therefore doesn't count), — contacts, calenders and tasks didn't make it out alive. Annoyingly enough, I now can't even add new items to neither calendars nor tasks, and the import function gives some vage "failed access" error for reading in its own old dot-files (which I first had to copy to my home dir, because the file browser didn't care to list those useless dot-directories such as, say, ~/.evolution/).
Just great. So I take a look at the Evolution files. Half of them are in ~/.evolution — and for some reason there're a couple more lurking in ~/.gconf/apps/evolution. Whatever, copying .gconf/ over to the new account doesn't do the trick, either. For, now that I have started Evolution for the first time, it has already taken control: I quit Evolution, edit some config files, restart Evolution — and the files are restored with their old (useless) content. WTF? “Hurray for the new gPaddedCell demon, codename Sysiphus!”, or what? I for my part suspect this fishy gconfd process. Silly modern trinkets. What the hey, I just log out and use the text terminal, baby, gconfd doesn't do text. Sheesh, when I was your age, we had no gconfd. And no window manager other that fvwm2, and we were happy. We punched cards. With our teeth! In cuneiform, baby!
Anyway, where was I? Well, one ctrl-alt-F1 later I'm scanning through files checking boring read/write permissions and groups... nope, situation normal. I see my calendar data and my tasks there allright — Evolution just doesn't read them for some reason. Then I notice, in those %gconf.xml files, there's my old home path and my old hostname... Dang. If Evolutions takes these configs serious, it might just be protecting my personal data (calendar etc) from the "strange" user that I am now...
There is even some weird kind of ID number appearing in those %gconf.xml files: uid="1121950749.6099.12@oldhostname"? The first number changes rarely and looks similar to the timestamps those files use, I'll just leave it that way. The second, isn't that my old UID? I don't remember. The third ID number changes often, just a counter of some sorts? What now, do I have to update each mention of my old UID, home and hostname before I can use calenders and tasks again? *sigh* Well, it's worth a try, since I find no easier solution in newsgroups, either.
OK, after updating millions of %gconf.xml lines with the correct $HOME, $UID, $HOSTNAME entries, I open Evolution, and... Yay, the contact list wakes up from its beauty sleep. Then, Evo develops a Bad ConcienceTM and gives me like half a dozen popups for all those meetings that I have "missed" during the last 2 days due to "sudden invisibility". (Yeah, right, does Evo truely believe I trust a computer with reminding me? Kiss my analogue hardcopy, baby.) However, still no tasks nor meetings visible in the list, neither can I add new ones. Or can I? Adding a test task via the New Task menu item doesn't show any response (not even an error message). But when I double-click the task list, type "test test test" into the line, and hit enter — it shows up in the list! And with it, all the other old entries!? Yay! Evo blushes and quickly highlights all the tasks red that were due yesterday, just in case I didn't know.
Unfortunately, this "solution" only goes so far it seems, for the calender part still doesn't show anything even after I've added some test appointments. I look at the *.ics — Strange, the test entries seem to have made it into the files... but are not displayed...? Well, to cut a long story short: If it should ever happen to you that some config ought to be working, but the data still doesn't show, check whether there is a filter or tiny checkbox somewhere that switches visibility on/off... *whistles innocently*
Now I sit here again happily hacking away with my Linux (well, as happy as one can be without Sylpheed), only interrupted now and then by an overeager Evo popping up little windows saying "Appoointment! test test test!" Shoot. Should have deleted those...
Posted by seapegasus ( Aug 18 2005, 06:39:10 PM CEST ) Permalink Comments [0]