Penguins, we're at 20% ground force operational status.

:: Next Page >>

A Bash script to force Image Magick to use zero-indexing when it converts GIF to JPG

Date/Time Permalink: 05/14/13 12:33:38 pm
Category: HOWTOs and Guides

I can't believe this hasn't been solved somewhere before, but I was converting a .gif to individual image frames for a project when I discovered this behavior.

UPDATE: Guess what??? image magick CAN output zero-padded files, just by doing:

% > convert mygif.gif mygif_%05d.jpg

no wonder I couldn't find it by Googling. I was looking for an option switch. But you'd still need to find out how many zero-spaces to use for individual gifs for each case. My thing is, I hate remembering fifty commands when I can name a script after what I want it to do and forget about it.

We now return you to my folly, which you can still adapt for programs which don't zero-pad:

The command:
%> convert mygif.gif mygif.jpg

What it does with the file names:

mygif-0.jpg
mygif-100.jpg
mygif-101.jpg
mygif-102.jpg
mygif-103.jpg
mygif-104.jpg
mygif-105.jpg
mygif-106.jpg
mygif-107.jpg
mygif-108.jpg
mygif-109.jpg
mygif-10.jpg
mygif-110.jpg
...

What it should do with the file names:

mygif-000.jpg
mygif-001.jpg
mygif-002.jpg
mygif-003.jpg
...

That's because not all programs that are going to handle these image frames know to ignore Bash-file-sorting order and substitute logical numeric file-sorting.

And I'm searching all over the place, but there doesn't seem to be an option in convert to force this file-naming convention, or else I'm not searching for it right. Anyway, this script whacks the file names into shape:

#!/bin/bash

#
#  Apparently when you call image magick to convert gif to jpg
#    it doesn't use zero-indexing to ensure the files list
#    in order for each program.
#
#  So... ouch!
#

for FILE in $(ls *.gif)
  do
    DIGITS=$(identify $FILE | wc -l | wc -c)
    convert $FILE ${FILE%gif}jpg
      for JFILE in $(ls *.jpg)
      do
        NUM=$(echo $JFILE | cut -d- -f2 | cut -d. -f1)
        PSTRING="%0"$DIGITS"d"
        NEWNUM=$(printf $PSTRING $NUM)
        SEDLINE="s/-.*\./-"$NEWNUM"\./g"
        mv $JFILE $(echo $JFILE | sed $SEDLINE)
      done
  done

exit 0

You'll note the convoluted series of variable abuse. That's because of the various quirks of the individual text-mode tools.

First, $DIGITS finds out how many zeros to index for the file names. Since you want this to work on any gif with any number of frames, we have to use Image Magick's identify command on the gif, pipe it through wc -l to count the frames, then use wc -c to find out how many digits that number is. As you can see, we end up with one superfluous zero here, but the hell with it at this point, it does the job.

I also have to extract the number from the file name, and drop it into the $NUM variable.

In a perfect world, I could just expect to say something like:

% > mv $FILE $(echo $FILE | sed 's/-$NUM\./-printf "%0$DIGITSd" $1./g')

But no.

Second, sed won't take a mixed variable string like "s/$PATTERN1/$PATTERN2/g". So you have to put the sed argument in a variable.

But we're zero-indexing here, and the only tool I know of to do that is printf, and guess what? printf also won't take Bash variables in its argument string! So now you have to make $PSTRING to build the argument to printf so you can make $SEDSTRING to build the argument to sed...

So, is that done now? I'm crazy for doing it this way, aren't I?

It does work. If you use it, be sure to use it in its' own special little directory so it doesn't wantonly mess with other unrelated files...

Follow me on Twitter for an update every time this blog gets a post.
Stumble it Reddit this share on Facebook

Script of the Day: Random Wallpaper Setter

Date/Time Permalink: 10/08/12 02:44:56 pm
Category: HOWTOs and Guides

Y'know, I get tired sometimes of dealing with all the different screens. Between several cell phones, a laptop, and several desktop PCs, I have about eight different devices that want their default screen space filled with something and eight different methods to use for filling them. Bah, I said, and also there's still no default mechanism in my favorite desktop, Fluxbox, for setting the wallpaper from the menu. Furthermore, for those times when an image doesn't scale easily onto screen dimensions, there's also no easy way to set the surrounding fill color.

This is BG.sh, Which I load into my menu system and launch with one click. It picks a random file out of my "graphics/Walls" directory, slaps it onto a full-screen background (automatically optimized for whatever screen it's running on) of a neutral color picked from the image itself (composing a new image in the process), and slaps it onto the screen. And then I get on with my life...

#!/bin/bash

# Step 1 - grab random file
FILE=$(ls ~/graphics/Walls/ | shuf -n1)
convert ~/graphics/Walls/$FILE ~/.temp.png

# Step 2 - Determine fill color
FILLCOLOR=$(convert ~/.temp.png -scale 1x1\! -format '%[pixel:u]' info:-)

# Step 3 - Determine the geometry of the root window
GEOM=$(xwininfo -root | grep -A 1 Width)
GEOMX=$(echo $GEOM | awk '{print $2}')
GEOMY=$(echo $GEOM | awk '{print $4}')
SIZE="$GEOMX""x""$GEOMY"

# Step 4 - Make a new background image with the fill color and root window dimensions
convert -size $SIZE xc:$FILLCOLOR ~/.current_wallpaper.png
convert ~/.temp.png -resize $SIZE\> ~/.temp.png

# Step 5 - Combine wallpaper and background and display
composite -gravity center ~/.temp.png ~/.current_wallpaper.png ~/.current_wallpaper.png
rm ~/.temp.png
display -window root ~/.current_wallpaper.png

exit 0

Ugly as grandma Moses, isn't it? I expect the usual commenters pointing out that I do everything the hard way.

What we're doing in step 2, is we're taking the wallpaper image and making a new temporary file where we scale that wallpaper down to a single pixel - this will produce the average color from the image. Then use Image Magick's 'info' feature to read the RGB of that one-pixel image, and that becomes the background color. The rest is just a few 'combine' statements and use of the little-seen GNU 'shuf' command, handy for whenever you want a random file from a directory.

As long as a system has X11, Image Magick, and GNU standard utilities, it should work. Feel free to snarf bits and bobs for your own uses.

Follow me on Twitter for an update every time this blog gets a post.
Stumble it Reddit this share on Facebook

Using Bash To Solve A Brain Teaser

Date/Time Permalink: 02/21/12 11:01:57 am
Category: HOWTOs and Guides

So we have this puzzle, expressed as:

RUT * RUT = CAREER

...where each letter stands for a digit. So in other words, "RUT" is the square root of "CAREER". But what are the digits?

Obviously, we need a three-digit number whose square is a six-digit number. "317" is the lowest number that is the square root of a six-digit number, and the three-digit number can go as high as 999. So far our Bash line looks like this:

for N in $(echo {317..999}); do S=$(($N*$N)) && echo $N, $S; done

Our answer is somewhere in that column. Now we see another clue, that the first digit of the multiplier is the same as the third and sixth digits of the product. We know we can take an index slice from a variable, such as getting the first digit with ${N:0:1} (remembering that variable indexing in Bash starts at zero). So now we can create a conditional filter which only prints the numbers if the first digit of the multiplier is the same as the third and sixth digits of the product. We'll have to break that down into two separate tests.

First let's filter it down to products whose third and sixth digit are the same:

for N in $(echo {317..999}); do S=$(($N*$N)) && if [ ${S:2:1} = ${S:5:1} ]; then echo $N, $S; fi; done

Piping that into wc -l says that only 94 lines printed, so we know we're narrowing it down. Now test if the first digit of the multiplier is the same as the third digit of the product:

for N in $(echo {317..999}); do S=$(($N*$N)) && if [ ${S:2:1} = ${S:5:1} ]; then if [ ${N:0:1} = ${S:2:1} ]; then echo $N, $S; fi; fi; done

So we had nested conditionals there. Don't pass out on me, we're almost there. The above command line pumps out this column:

.
418, 174724
452, 204304
505, 255025
515, 265225
525, 275625
614, 376996
676, 456976
927, 859329
943, 889249

From here, we can get it by eyeball. We also know from "RUT" and "CAREER" that the fourth and fifth digits of the product have to be the same digit. We could include a third nested test like so:

for N in $(echo {317..999}); do S=$(($N*$N)) && if [ ${S:2:1} = ${S:5:1} ]; then if [ ${N:0:1} = ${S:2:1} ]; then if [ ${S:3:1} = ${S:4:1} ]; then echo $N, $S; fi; fi; fi; done

Great Scott! We're down to two possible numbers:

.
515, 265225
614, 376996

We have one more clue, that the first and third digits of the multiplier must be different from each other. We can clearly see that that disqualifies 515, leaving "RUT" = 614 and CAREER = 376966, but we're here to do it in Bash:

for N in $(echo {317..999}); do S=$(($N*$N)) && if [ ${S:2:1} = ${S:5:1} ]; then if [ ${N:0:1} = ${S:2:1} ]; then if [ ${S:3:1} = ${S:4:1} ]; then if [ ${N:0:1} != ${N:2:1} ]; then echo $N, $S; fi; fi; fi; fi; done

That gave us the correct answer.

So, what have we learned in this example?

  • How to list a sequence of numbers. (echo {X..Y})
  • Shell math. (X=$(($Y*$Z)))
  • How to do a one-liner loop. (for X in $(command); do thing; done)
  • How to take a piece of a variable (${X:0:1})
  • How to do a one-liner conditional test. (if [ $X = $Y ]; then do thing; done)
  • How to do a negated one-liner conditional test. (if [ $X != $Y ]; then do thing; done)
  • That we can nest this all together!

Good thing this problem comes up all the time, isn't it?

Follow me on Twitter for an update every time this blog gets a post.
Stumble it Reddit this share on Facebook

An infographic I just made for the US dollar bill

Date/Time Permalink: 12/23/11 01:44:21 pm
Category: HOWTOs and Guides

Meh, I don't normally do this, but since I just finished Inkscaping an infographic about my favorite piece of paper, and used it for my Mind--Blown post-of-the-day, I figured it could do double-duty here as an exhibition of what I'm up to lately.

Click to enlarge:


anatomy of a US dollar

Inspired by my coin-and-currency collecting hobby. This information is of course available all over the web, but never before compressed into one clear, comprehensive infographic before.

Follow me on Twitter for an update every time this blog gets a post.
Stumble it Reddit this share on Facebook

Penguin Pete On Writing

Date/Time Permalink: 04/17/11 11:36:23 am
Category: HOWTOs and Guides

All over the web I see these forums for new writers. Websites for the writing trade, message boards, and so on. I see a lot of young authors trying out fiction, trying to be the next Stephenie Meyer (talk about setting your goals low), asking each other for advice, "critique my work," does anybody know where I can find a daily writing prompt? Oh, and playing these little blog comment games and what, oh what, shall we ever do about this awful angsty writer's block?

Ah, God. I see a lot of young kids struggling every which way to get out of that Writer's Workshop mentality.

Maybe I can help.

If you've checked out my 'about me' page (it's over there in the cobweb-infested sidebar), you'll know that my career includes a lot of manual, menial labor. I'm not kidding that I've worked construction, and I mean that that includes taking a shovel in hand and digging a few ditches, and furthermore that meant doing so in the Mohave Desert in Arizona in 120-degree August heat. I've done some real grunt labor in my time - one of my earliest jobs was moving appliances around in a warehouse. No, not with a forklift and pallet-jack, I mean by shoving them by hand. I was fourteen at the time.

I'm telling you this so you know, I've since retired from the world of jobs to start my second life having a career. That mostly consists of writing.

And I feel no different when writing an article than I do when digging a ditch.

If people ask me what I do, I say "I write" and I use the exact same tone as when I had to answer that I dug ditches. I can write in my office, or in bed, or watching TV, or riding in the car, or with one hand while feeding a baby or brushing a cat with the other. I can do it alone or in a crowd. It's no special trick to me.

I don't attach honor to it, or prestige, or wonder, or the allure of being an artiste. I don't gaze in my navel and agonize over the cruelty of my muse. I don't need a special writer's hat or a magic pencil or a bunch of cherubs scattering rose petals in my path. I don't say a prayer and do a ritual and genuflect before the altar of Homer or anybody. Oh, sure, if somebody wants to hear me wax eloquent with a whole pile of that scholarly horsecrap, yeah, I can pontificate on ze arte along with every other pretentious Ivy League monkey out there.

But really, writing to me is, and always will be, an activity as mundane as wiping my ass.

Am I great? No.

Will I ever be famous? Meh, doubtful.

Will I ever be rich? Meh, probably not, maybe I'll get lucky.

Will I have immortality through my work and be read by future generations... Oh please! I'm one ant in a hill.

It's a living though.

When somebody praises my work, I grin, glad you liked it. When somebody criticizes my work, I don't grin, that's a shame, I'll try it different next time. I've never met the thing that anybody had to say about my work that didn't wear off of me in about a minute.

I'm not feeling about it any way or the other, you see? That way I don't overthink it; I'm not paralyzed with indecision because the decisions I make aren't that important anyway. If I write crap, my life isn't over. If I write solid gold, I still can't retire.

So there's this detachment, this drone-like aloofness, as I approach the blank page just like a blank patch of ground that needs a sewer line buried in it. Writing, what, this is hard for people? Ha ha ha! I'm sitting indoors on this comfortable chair pushing these little buttons on a box! What's hard about this?

I dunno, I have the feeling that that perspective would help a lot more young aspiring writers just get going and, you know... go!

is Penguin Pete a wizard?

Follow me on Twitter for an update every time this blog gets a post.
Stumble it Reddit this share on Facebook

A Quick Guide to Lynx

Date/Time Permalink: 03/29/10 07:12:14 pm
Category: HOWTOs and Guides

Who on Earth would bother to use a text-only web browser in 2010? Actually, it's one of the important tools in the accessibility toolkit for the disabled, being easily coupled with a screen reader. And OK, for those times when you have graphics-card problems. But when else? I could go on all day about the times when Lynx comes in handy:

  • Best for viewing hyperactive websites. No Flash, no Javascript, no blinking, flashing ads, no bother.
  • Best for fast browsing. Sometimes its important to get in, get the key piece of data you need, and get out.
  • Browsing a guide when you're playing a game. The game runs fullscreen, but you're stuck, can't save, and need to look up the game guide? Just Ctrl-Alt-F2 to the console and look it up in Lynx.
  • Can be scripted. For instance, to search for the term "bash script", "lynx -dump 'http://www.google.com/search?q=bash+script'" will dump the results page right to the command line. Use this power only for good and not evil.
  • Best to check for web page errors. What counts for search engine spiders is how they see the text. Viewing your site in Lynx tells you exactly what the search engine sees.

Now then, Lynx out of the box is somewhat annoying. You can change its default behavior in "lynx.cfg", a file found lurking in places like /etc/lynx-cur/lynx.cfg. You can either copy this to your home directory for just one user's preferences, or go root and edit it for the whole system.

lynx.cfg is huge, but well-documented. Here's the changes I find most useful; these are a matter of preference, so alter them to taste:

STARTFILE:http://www.google.com/
(This is your 'home page', what Lynx goes to automatically on start-up.)

DEFAULT_INDEX_FILE:http://penguinpetes.com/
(This can be your alternate home page, the page you go to when you hit 'I' for index.)

SAVE_SPACE:~/Downloads/
(This sets the directory to save all downloaded files to.)

SHOW_CURSOR:TRUE
(Having the cursor blinking and visible helps with navigating through a document.)

SCROLLBAR:TRUE
SCROLLBAR_ARROW:TRUE
USE_MOUSE:TRUE
(Interesting mouse usage and scrolling options, for the keyboard-averse. A curses-drawn scrollbar and arrow set appears to the right; if you have enabled console-mouse support, this will work just like a GUI. Although it's still slower than just using the keyboard.)

SET_COOKIES:TRUE
ACCEPT_ALL_COOKIES:TRUE
PERSISTENT_COOKIES:TRUE
COOKIE_FILE:~/.lynx_cookies
(This will make it quit bothering you with all those micromanaging cookie details!)

DEFAULT_BOOKMARK_FILE:.lynx_bookmarks.html
(See what I did there? I put a dot in front of the file so it's hidden. No need to look at it in my home directory.)

DEFAULT_USER_MODE:ADVANCED
(This will make it work more like a normal browser, eliminating the two lines of help, and showing the current page or link URL in the status bar.)

By the way, you use the cursor-arrow keys to move the pointer around (the cursor will hop from hyperlink to hyperlink). The number-pad's 'Ins' and 'del' scrolls the whole page up and down.

Ancient Chinee Secret!

Follow me on Twitter for an update every time this blog gets a post.
Stumble it Reddit this share on Facebook

What Programming Language Should You Learn?

Date/Time Permalink: 01/06/10 11:04:51 am
Category: HOWTOs and Guides

I'm going to attempt to answer the number-one most common technology question on the web, and hopefully do it so I can just link people here. Wish me luck, I'll need it!

The answer is different for everyone!

For me, I learn for learning's sake. Literally, I have never encountered a language or computing technology that I did not want to learn. I just started with my first computer, a Commodore VIC-20 in my teens, and was thrilled to find that it had BASIC and a BASIC manual. That was day one. Since then I've just snarfed up whatever I could find. So far that's: C, C++, assembly, Lisp, Tcl/Tk, Bash, Awk, Python, Javascript, Actionscript, PHP, SQL, POVRay (used for rendering 3D graphics), and I'm losing track from there.

Being pro-learning is the only skill you really need!

That's the most important thing. Knowing one language just isn't any good. Knowing five is a little better. They get easier as you go along; I'm at a point where I can go from a cold start to coding a simple application in just one week on virtually any language. I just have a passion for technology and soak up everything I can get my hands on, and worry how to turn it into money later!

There's no such thing as "bad learning."

In 20 years watching the field, I've become convinced that every skill eventually becomes marketable. I never thought that somebody could make money being a Wordpress theme designer, a Twitter background theme artist, making ringtones for mobile phones, or setting up eBay storefronts, but there are all thriving cottage industries right now. Who knows what five years from now will bring? Professional Digg commenters? RSS publishing services? Mobile phone address book organizers? I've learned to never say never.

OK, but what do I learn for a job?

Well, I'll take a stab at it; here's the languages that currently seem to be going somewhere jobwise:

Javascript and AJAX: Big, big, big right now. I don't know if there's a new Web 2.0 bubble lurking or not, but it seems like there's jobs flying around for anybody who can build an AJAX site. It's made out of Javascript and XML, with a side helping of HTML and CSS. All you need is a text editor and a web browser.

PHP: Especially on the OS-Commerce backend. Shopping cart apps, game sites (the kind with subscribers), all kinds of web-based commerce. PHP is one cruddy language - it's ugly and clunky - and it's a smash hit. On Linux, I install PHP and run scripts right from the command line, saving the output as HTML. Or you can get a cheap web host and test server apps live. Job search keyword is LAMP, for "Linux Apache MySQL PHP"

C/C++: Still the application standard. It is simply never going away. On Linux, gcc comes with the distro, and on Windows there's a nice free IDE called Bloodshed Software Dev C++, if my memory serves.

Flash: Still big. Get a good Flash game online, and the world will drown you in ad revenue. Webmasters are always out to hire a Flash webmonkey. Requires some understanding of graphic design work as well. On my site, I stump a lot for SWFTools and the swfc compiler, with a lot of demos in the Flash category. I also hear good things about HaXe, but haven't tried it.

Python/ Ruby/ Lisp: Not much on the job front, but it's so fun to learn and use for yourself, that any work you get out of it is a bonus. The high-end Silicon Valley start-up type places will be more likely to hire in this category.

What about specific jobs?

Video games on the computer usually revolve around C, C++, and the whole C family. If not C, then assembly. Web server-side development is mostly PHP, some Perl. Web browser-side development is Javascript, AJAX, and Flash, with a lot of markup languages (HTML, XHTML, CSS, XML). Desktop applications are a crap-shoot; maybe Python, maybe Ruby, maybe Java, who knows? System administrators need shell scripting skills, in Bash and Perl. Big business mainframes are still crunching along with COBOL, God help us all.

Why should you learn multiple languages?

Here's what I mean about all learning is good learning: Flash's Actionscript is basically Ecmascript, which is also what Javascript comes from. Once you learn Javascript, you already know most of Actionscript. Javascript is related to Java, which is derived from C, so there's a link there. PHP has a very C-like syntax, so once you learn C or C++, PHP will be almost subconsciously easy to learn. Python and Ruby both are related, in a round-about way, to Lisp. When you come to Lisp from the C-side of programming, your mind will be blown. Get a free Emacs install and a manual and lose your head for a couple of weeks on the built-in ELisp interpreter inside Emacs. Now when you come to Python, Ruby, and other languages related to them, they'll make more sense.

A language can help you even if you don't get hired to program in it.

Now I, myself, make most of my freelance living from writing and graphics, so I'm really not the one to ask about making a living purely from writing code. The best work I've gotten in code is Flash stuff. If you're familiar with my Flash category on this blog, you know that I have a whole Flash toolchain built out of open source, with POVRay for 3D graphics, Bash scripting (Linux command line) to assemble animations, and SWFTools to compile the Flash. And now I'm writing my own POVRay frontend in Python out of frustration with the other POVRay frontends out there - this is an example of how knowing a language helps me.

I have yet to this day get paid one penny for Python code - directly! But my own tools tend to be either Bash or Python, which helps me do the other things I get paid money for. For another example, I have a lot of Bash scripts I've written over the years to convert or handle different document formats, so that saves me time on my writing work.

What is the easiest to learn?

This question is wrong. If you're asking it, I'm sorry, but my advice is to forget about programming. There is no "easy." You learn or you do not learn.

Well, which one is the most fun?

That's pretty subjective. Answers will vary, but if you just want a toy to play with for your own uses, Python and Ruby are both widely considered "fun". BASIC used to be, but it's outdated now.

You seem to lean heavy towards open source systems. What about Windows and Mac?

Sorry, check the site - it's "Penguin Pete's" as in "Tux, the Linux penguin, the mascot of Linux!" Call me biased, but for learning programming you can't beat Linux. The system's free, the tutorials are free, the documentation is free. Linux is built for learning.

I don't like your answer!

Remember, I said this is the number-one most common technology question on the web! Really, I swear on my grandmother's grave, you are not the very first person to have asked! Here are some search links for the other 348 million answers:

Keep the change

Follow me on Twitter for an update every time this blog gets a post.
Stumble it Reddit this share on Facebook

Little Annoyances Moving Into Ubuntu

Date/Time Permalink: 09/25/09 10:46:09 pm
Category: HOWTOs and Guides

As much as everybody complains about fast food restaurants, there are reasons why they're so successful. They're consistent. A burger at an East coast location in the restaurant chain is the same burger you could order on the West coast. They're crappy, but it's a kind of processed, homogenized, not-quite-too-bad crappy that makes it something that you'll just barely tolerate when you have to.

Actually, Ubuntu has made some improvements in recent years. Now that I have a faster machine, I barely notice that this is still the slowest Linux distro around. Packages now work more often than they don't work. The color scheme still makes me think of a design I could make by throwing up after consuming a root beer float and Cheetos.

Going by the cute trick of searching Firefox's page history for 'Ubuntu', which brings up everything I searched Google for the solution for, here's the many misadventures I've had so far in Ubuntuland and the solutions, or lack of, I came up with:

IT IS VERY IMPORTANT TO READ THE NEXT SENTENCE: This list is for Ubuntu 9.04 (Jaunty Jackalope). Did you get that? Don't find this thing in Google twenty years from now and post complaining because these fixes didn't work for release 49.04 (Terrible Tapeworm).

NVidia drivers and shutting down X.
STATUS:solved

If you have to install NVidia drivers for an NVidia GeForce2 on Ubuntu, here's the steps to take:

  1. Visit NVidia's Unix driver's page
  2. Download only the "Latest Legacy GPU version (96.43.xx series)" for IA32.
  3. Log out of X... but see next step.
  4. Drop down (Ctrl-Alt-F2) to a console, go root (su) and type "/etc.init.d/gdm stop" to shut down X. Ubuntu automatically makes a new X session for graphical login; even kill-9ing all X processes doesn't work. Ubuntu is designed by the anti-command-line people, so what you're doing is taboo. Don't let anyone see you. Check for hidden cameras.
  5. Run the executable file you got from NVidia. Reboot. Happy!

All other paths lead to unhappy (at least they did for me).
If this doesn't work for you, I'm sorry. It worked for me. Back to Googling you go!

DOSBox keys.
STATUS:solved

DOSBox apparently developed this new bug where the arrow keys (the cursor keys) stopped working. Various dead ends lead to frustration. Here's the fix: make a dotfile (it begins with a period, like your girlfriend's bad mood), in your home directory called ".dosboxrc" and paste this in:

[sdl]
usescancodes=false

...save it. DOSBox will work correctly now. Isn't that stupid?

Desktop sound.
STATUS:solved?

Um, sometimes sound works and sometimes it doesn't. What seems to help is: (a) opening the volume control dialog (not doing anything, mind you, just opening it to wake it up), (b) re-starting X (logout, login), (c) only having one thing open at a time (Firefox and large games especially hate to compete for sound services). I have no idea if this is a fix or not. It seems to work, but maybe it's just superstition.

Customizing Gnome menu.
STATUS:NOT solved

Gnome is one desktop that really doesn't seem to like customizing a lot. There is The Gnome Way, and that's that. One aspect of this bondage-and-discipline philosophy is that so far, I have yet to succeed in getting a single change to the Gnome menu to stick. I can open System - Preferences - Main Menu and click and mouse around all I want to, and when I close it, nothing on the menu has changed. I am not worthy.

Having to use the dumb little drawer.
STATUS:yuck!

As a work-around for the last item, I've been reduced to using that dippy little drawer app that's been in Gnome since the beginning. I hate that thing, and it won't let me chain commands with "&&" in the dialog, so for doing things that require two steps (like changing to the directory for a Windows-native app within "drive_c" and then running a .exe with wine) I have to write a shell script and execute the script from the dippy little drawer.

Finding custom icons.
STATUS:Worked around.

When populating said dippy drawer, everything you put there needs an icon. The only two icons provided by Gnome that aren't also used for some other purpose is a red apple and a green apple, and - attend me carefully here - none of the programs I run from the dippy drawer even have anything to do with fruit, so I drew my own. Is there a huge collection of (freedom/beer) free icons out there that isn't for Gnome apps, but just semi-generic pictures for things you might invent? For instance, WindowMaker comes with a funky set of icons with everything from a mug of beer to a wasp on them, just for generic user-defined use. Anyone? If not, I could make a stack of them sometime and post them.

Turning off the console beep.
STATUS:solved

In keeping with Ubuntu's command-line taboo, it beeps at you a lot to punish you when you type. Like, I hit 'tab-completion constantly - Ubuntu beeps every time I do that. To stop ALL beeps (should work for any Linux distro) blacklist the PC speaker by opening /etc/modprobe.d/blacklist and simply enter this line:

blacklist pcspkr

...save and reboot. Note that this will disable *ALL* beeping by the system, including things like when you Ctrl-F in Firefox and type in a search and it can't be found. The motherboard's beep with the POST will still work (when you turn the machine on), because Linux isn't running yet.

Makehuman.
STATUS:kinda solved

Not an Ubuntu issue, but the new 1.0 alpha of MakeHuman doesn't do anything yet. Like last time, I stick with the 0.9.1 Windows executable on Wine, which runs like a champion!

Google Sketchup and Wine.
STATUS:help!

Bugger all. It don't work. Both version 7 and version 6 of Google Sketchup crashes like a brick kite, without saying anything helpful about why. It had problems for me last time, so now it's worse. Somebody from the Wine team asked me to blog about it again some time, so I promise to try again, maybe I need to do the hocus-pocus given in this tutorial again.

KPOVmodeler
STATUS:help!

KPOVModeler has gotten worse and worse and worse with every release. It was buggy and error-prone before, and it's just plain unusable now. It hasn't been maintained since before I started using it. The developer says he's calling it quits and is begging anybody to take over.

I would, but I am neither good at, nor am I happy to work with, a C++/KDE-dependent application. I'd rather start over and build a duh-simple interface in something like Python, where it would work everywhere all at once instead of just on KDE.

Yes, I've seen the modelers list on POVRay's site. All of them (so far as I've been able to investigate) seem to be either (a) not free (as in FOSS), (b) dead projects just like KPOVModeler is, (c) not for Linux, (d) specialized (such as only capable of trees or cars), or (e) not POVRay-related at all. And in one case (f) is in Japanese. The closest to a live, free, Linux, POVRay-capable modeler is Truevision, whose news page hasn't updated since 2005 and is tied to Gnome anyway. I might try it in a bit.

Oh, and I also tried compiling a source tarball of KPOVModeler 1.0 on Ubuntu. No, I could not keep a straight face while typing that. The configure script died with "lib/cpp failed sanity check." About this time, so was I.

Anyway, that is where I am on my Ubuntu adventure, and this is what it looks like today.

PPlogo

Follow me on Twitter for an update every time this blog gets a post.
Stumble it Reddit this share on Facebook

I For One Welcome Our New Google Overlords

Date/Time Permalink: 07/08/09 03:36:29 am
Category: HOWTOs and Guides

OK, Google, it's about time you stepped up to the pinata and took a swing. You're finally launching your own operating system.

Maybe at last the proprietary monopoly will be shattered.

  • I had hopes when Apple went with a BSD core. Apple let me down.
  • I had hopes for the ReactOS project. They crawled off and died somewhere.
  • I had hopes for Ubuntu. It doesn't want to play ball.
  • I had hopes for Sun Open Solaris. They wimped out.
  • I had hopes for Oracle when they adopted their own Linux. They're asleep.
  • I had bigger hopes when Oracle bought Sun. Nope, they're still asleep.

So it's Google's turn. I'm 0.1% happier than I was a minute ago. Now, Google, here is what you can do:

DON'T SCREW THIS UP!!!

Here is my guide to Not Screwing It Up:

Market!

Plaster it! Saturate it! Find a new Billy Mays and scream it in late-night infomercials! As pitiful and pathetic as Microsoft's sorry excuse for marketing is, I expect the 26th and 27th richest people on the planet to be able to show them how it's done.

Do not mention Linux!

Normally, this is the kind of heresy that I would cut out my tongue for, but this time it's the right thing to do. This has nothing to do with technology; this is about what is in people's heads. Average consumers, if they've heard of Linux at all, have been force-fed 20 years of brainwashing FUD by Microsoft to the point where Linux = evil. Keep your brand name (Even John McCain praised "the Google"!) and "Chrome", that's enough. Wait until you've conquered the market, then wait ten more years, then if you want you can go "Surprise! You've been using Linux!" That's fine.

(And to my beloved brethren and sistren in the Linux community: put your ego away. This isn't about Linux getting desktop recognition, this is about breaking the global dictatorship. Details can come later, if ever.)

Expect trouble in the US!

You will be thwarted. Microsoft owns too much of the US government for you not to be harassed. So don't worry about the US market. Remember, the Metric system caught on everywhere else but the US, too. The US will be your toughest market, even without bought-off senators and officials throwing themselves in your way like salmon.

Ignore the siren song of asstroturfers!

Don't be stupid like a few other open source projects and listen to the thousand flaming trolls in a comment page - they are paid to derail you. Google, you have done very little wrong so far; what market share you've acquired, you've earned fair and square. Don't start doubting yourself now.

Fight for OEM!

On the shelf, installed systems. For sale. In stores. Commercial stores. Chain stores. Big Name Retailers.

Gooood luck, Google! No company in the history of business has had the battle on its hands that you have on your hands today.

If all goes well, within my lifetime I should be able to tell people on the street that I use something besides Microsoft and not have them look at me like I just beamed down from Mars sporting two heads.

That's all I really ask in life.

PS Yeah, I know, some of the assertions and assumptions I made here don't stand without citations, and they're not getting them. Being pedantic right now is a big waste of time.

FOSS is Freedom!

Follow me on Twitter for an update every time this blog gets a post.
Stumble it Reddit this share on Facebook

:: Next Page >>
suddenly the moon