Monday, July 5, 2010

Moving the site...

I decided to move this blog over to my main website. You can now find my technical knowledge base blog at http://www.alwayssababa.com/taxonomy/term/221 or just go to the main page at http://www.alwayssababa.com and look for new posts under "The Ledge Of Know" block in the left hand column.

If you've been reading this blog in an RSS feed reader, you'll want to change your subscription to http://www.alwayssababa.com/taxonomy/term/221/*/feed

While you are over there, you can check out some of the other things that I get up to when I'm not on the ice. There's stuff about ice skating, my ideas about education and work, random rantings about life in general, and even poetry and short fiction. Everything is in its own space over there, with its own block and page and feed, so it'll be easy to find just what you want to read and ignore the rest.

I'm looking forward to seeing you at the new site!

Monday, March 23, 2009

A family history of computing

Ed. note: This post is part of the Ada Lovelace Day blog posting event on March 24, 2009.

My mother's mother was not an ordinary girl of the 1930's. First off, she never should have lived. She was born extremely premature to an unwed mother in a time when premature babies didn't have any chance, and an unwed mother had no support. Of course, her mother gave her away for adoption. What else could she do? And so, when my childless great-grandfather and great-grandmother were walking through the orphanage looking for a baby boy to bring home, to raise up so that he could help on the farm and support them in their old age, my grandmother was a very unlikely candidate indeed.

But, the family legend goes, as they walked through the line of bassinets, my grandfather stood stock still at the foot of one bed. He was captivated by the tiny, wrinkled thing inside the bassinet. He had fallen in love.

"Oh, no," The nurse warned, "You mustn't. She won't... you know. She was born too soon. And you wanted a boy. We have a lovely baby boy just over here..."

But my great-grandfather would not be moved. He had found his child. He was going to bring this one home, and no other.

There were no incubators back then. My grandmother was kept in a boot-box under the wood stove in my great-grandparents' farm house in San Leandro, California. They had to buy a goat so that the baby could have goat's milk, since her stomach was too sensitive to handle cow's milk. And that wrinkled little preemie that shouldn't have lived thrived. And she was loved.

And she was spoiled.

She had violin lessons and ballet lessons. Her mother, a seamstress by trade from a long line of seamstresses, made her the most beautiful dresses, and taught her the secrets of a master seamstress. And she excelled at all of it. In fact, she would one day play violin for the San Francisco Symphony Orchestra and dance in the San Francisco Ballet. But that was not her real love, her true love.

It turns out, she had another talent. One far more unexpected of a little girl. She was a whiz with numbers. Perhaps it came from the fact that her father wanted a boy to play with and teach, and chose to give his treasured little girl all the same things he would have done for and with a boy. Perhaps it was just innate.

She did her Bachelors degree in Mathematics. Then she got married, had children, got divorced, and went back to graduate school. She moved herself and her children to Nevada, studied, and worked as a dealer in a Reno casino while raising her (then) three kids on her own. She got a Masters degree, but never got her PhD.

Again, family legend fills in the story here with unverifiable claims, this time of struggles instead of joy. It's said that she wrote a dissertation for her doctorate, but her male advisor took the work and published it as his own before she could turn it in for her degree. Perhaps it's exactly true. Perhaps there is more to the story. Who knows? But it certainly isn't unexceptional. There are many stories of women getting cheated out of the work that they did when a male in their workplace or school took credit for it.

My grandma returned to the San Francisco Bay Area with her children and her Masters degree and went to work at Laurence Livermore Laboratory. Even in the world of technology, she did a job that was considered women's work. She was one of the people who checked the math of the computers. You might call that a QA engineer today, only she wasn't checking on how well a GUI worked, she was checking to make sure that the fundamental math behind the program was designed correctly and that the answers coming out of the computer were the ones expected. She'd have to do the math by hand, with pencil and slide-rule, for a certain percentage of the responses, to make sure that all of the output was trustworthy.

My grandmother wasn't a terribly nice person, and she wasn't a very good mother, unfortunately. She didn't die happy or in the company of her children. She was, actually, pretty bitter and mean and even selfish. She left a legacy of mental health problems. Two of her three daughters committed suicide. Her son is an alcoholic. Her eldest child, who seems to have faired the best, and yet still has many problems of her own, is my mother.

My grandmother is a mystery to me. How could someone so brilliant be so unkind to her own children and sow so much discord in her own family? I don't know. But I do know that her grandchildren are all very bright, despite all of our own problems. One of her granddaughters grew up to be a lawyer. One grandson and one granddaughter grew up to be programmers. I lost touch with three of her grandsons years ago, but when they were kids they were all honors students, too. Perhaps one of them is a mathematician like her.

Saturday, March 7, 2009

Why I love Homeschooling

This is re-posted from another journal of mine which is mostly friends-locked. I'm posting this here because this site gets a wider range of readers, and also because people outside my small circle of friends are more likely to feel comfortable commenting here, and I would, very much like to read your comments or blog posts on the subject of homeschooling.

I don't have an ax to grind against the concept of school in general. There are good ones and there are bad ones. There are good teachers and there are bad teachers. There are also schools and teachers that are good for some kids and not good for other kids. Education is not a one size fits all sort of thing. The thing that I do have an ax to grind against is the idea that all children need to be educated in one specific way. That idea is patently ludicrous and isn't even borne out in the world of public education within one given system, much less across the many different systems that exist on our planet today.

Some people think that you can't give your child as many opportunities to learn at home as you can in a school environment, and for some schools that may, in fact, be true. The vast majority of schools, however, suffer from the opposite problem. Each class has to teach to a specific level, not getting ahead of itself for the quick nor slowing down for the laggers. Most schools suffer from a lack of funds and resources, and so they have to do with whatever they have. In general, schools also suffer from time constraints that require subjects to be carved into specific time slots and attention blocks.

At home you are not constrained by the four walls of an institution nor by the scheduling issues of a corporate body. If you would like to study French by visiting a French speaking place on the off season, you can go right ahead and do that. If you would like to keep reading your book about Greek history past 10 o'clock at night, that's fine, too, as long as your own priorities for the next morning allow for a late wake up.

As a homeschooler, for each topic you study you can be an autodidact or you can seek out tutors from a wide variety of sources. Sometimes you will choose to take an organized class on a specific subject. Sometimes you will find an inspiring mentor to help guide you in a particular learning endeavor. Many times you will learn a single subject from a number of different people that you communicate with in different places and different contexts -- the librarian, a professional in the field, hobbyists on the 'Net, friends you meet at a supply store or event. Some of your teachers will be peers of your own age. Some of your peers in a topic you explore will be much older than you are, and will be learning as much from you as you do from them.

As a homeschooling parent I don't have to know everything that my children want to or need to learn. I never even took calculus, so how could I ever teach it? I can't. Instead, my kids can teach me, or we can learn together. I take immense pride in the fact that my eldest son taught me almost everything I know about marine biology and absolutely everything I know about cephalopods in particular.

Homeschooling builds a sort of tightly bonded family that is extremely rare today in the Western world. People notice the relationship that I have with my kids, and fellow homeschooling families say that they experience the same thing. One of the reasons that we are so close is that we talk to each other. A lot. About lots of different subjects. That builds familiarity, sure, but it also builds trust. How many teenage kids actually enjoy sitting and talking with their parents? For me, the teen years have proven to be the best so far precisely because of the great conversations, movies, books, and activities that we've been able to share.

Homeschooling also builds a kind of independence that is uncommon amongst regular-schooled kids. The homeschooled youth knows that he or she has power over their day, their life, and the things that they learn and do. They may be guided by adults, but they have a much stronger sense than most about the fact that they are ultimately in control. Whereas school children who study topics outside of the school curriculum or skip ahead in their textbooks are considered nerds and geeks, homschooled children who do the same are the norm. Whereas school children who decide to start their own business, write a novel, arrange an apprenticeship for themselves or volunteer independently at an organization they care about are considered remarkable, amongst homeschoolers any of those endeavors are just part of the package.

I love homeschooling because it is limitless, borderless, boundaryless, and immensely fulfilling.

When I was very young and impressionable, somewhere around the age of 6 or 7, my dad told me that school wasn't there to teach me all the subjects that I was supposedly learning. What it was really doing was teaching me how to learn. Learning, he said, is one of the most important things in life. You will need to do it all the time if you want to be able to compete in the job market, if you want to be able to keep up with changes in technology and science, and if you just want to be a better person. Reading and math are tools for learning. The scientific method is a tool for learning. The things you learn about social studies and literature are building blocks on which to build more learning.

The thing is, if that's true, then school may be the wrong tool for teaching what we most need. What percentage of 5 and 6 year olds start their school careers as curious and inquisitive little beings excited about the prospects of learning more, more, more? What percentage of people come out of school full of wonder and a desire to keep learning? I don't have exact numbers, but I'm sure that you know as well as I do that the majority of people finish up school feeling burnt out and not wanting to go back to that experience ever again. For many people, the idea of learning a brand new skill 5 or 10 years after they have gotten out of school is terrifying. This does not bode well.

There are a few things that I think that my parents did extremely well in my early life. One of them is that they helped me to separate between the concept of "school" and the concept of "education". When I was a kid the first was presented to me as a legal requirement, the second as a thing of great joy which, when you are lucky, you can glean from the first. Why hope for luck when you can squeeze education out of every moment in your day without school?

Monday, March 2, 2009

A new kind of Nigerian Scam?

If you are not familiar with the Nigerian Scam yet, you may live in an email-free bubble. This is one of the most popular ways to separate naive and overly trusting people from their money. I won't bore you with the details, you can click the link above and find out about it if you don't know what I'm talking about.

Today, I got an email that may well be the new Nigerian Scam for a world in economic recession. Looking for a job? Great! We can make you a manager. Work remotely. Get 2500 USD/month. Riiiiight.

Now, I'm not sure what's going on here, or how the scam works, but I am quite certain that it is a scam. The from address does not match the name in the from line which does not match the "signature" at the bottom of the email. The "ID" at the bottom of the mail is an interesting touch to try to make this look real, but it appears to be nothing more than a string of random numbers.

Have you seen this scam? Do you know the rest of the story?




Move on with your career: Manager (Remote, part-time vacancy; 2500 USD/month, No investment)
Marie Green Mon, Mar 2, 2009 at 11:19 AM
To: name@address.com
Dear Job Seeker,

Due to converge of our mutual interests within the boundaries of the employment process, we'd like to manifest provision of the newly opened entry, available for your immediate contemplation.

An expansion process, has inevitably triggered the underscored insurance company to form complementary positions within the market of operation.

We're providing a feasible opportunity to put your legal background to use in the insurance/accounting sphere. Undoubtedly, our ultimate aim is to bring the confort work environment, stimulating a reciprocal leap towards beneficial and justifying operating conditions.

Informational table is presented below, to briefly outline the opening.

* Benefits and privileges:

-Feasible career advancement opportunities.
-Extensive tutelage (probation period) for the first two months.
-Fixed payout, resulting in 2000 USD monthly.
-Outstanding reimbursement plan.


* Requirements:

- Accuracy and leadership in the assigned operations
- Interpersonal and communication skills.
- Swift decision-making.
- Honesty and law obedience.
- Proficient use of Microsoft Office.

* Primary responsibilities:

- Preparing invoices, compiling itemized charges and submitting bills concerning insurance reimbursement enquiries.
- Commencing insurance operations (reimbursement cases).
- Consolidating viable documentation, records and paperwork.
- This is not insurance sales position and you don't need to sell insurance, this is Money Manager vacancy.



If you want to apply please send all your questions and contact information ONLY to e-mail: HRManagerPIC37@gmail.com
We're looking forward to our further communication.

Julie Mathews. HR department.
ID: 152032351851642108915


Monday, February 23, 2009

Coffee shop Internet problem

So, I have this thing where I hate staying inside the house for days at a time while I work and do my little thing all in a small space. I need to get OUT. I need to have the hubbub of people around me while I do my thing. (Note, not the hubbub of people who want me to pay attention to them. Just the hubbub of people who are doing their own thing while I do mine.) But something odd has happened to me two days in a row.

I get to Aroma, sit down with my coffee, boot into Ubuntu 8.10 and start to work. After a couple of hours, my Internet just dies. I try to log back into the Wireless connection, check my ip address. Request a new one. Fiddle and fuss, but nothing. I can ping the coffee shop's Internet gateway, but I can't see anything on the other side of it.

Logically, I thought that there was maybe a time limit on how long you can use the Internet connection here, that it recognized my MAC address or something and blocked me for the rest of the day. I dunno. But, on a lark, today I tried to log back into the network on the Windows partition. And it worked. Not only that, but it never died again.

Anyone got any ideas what's happening here?

Wednesday, February 11, 2009

Can you say "unschool"?

Seth Godin wrote about what school is good for in his post on January 31st, and then followed it up with another post on February 8th in which he discussed the fact that many people just stop actively trying to learn the day that they graduate from school.

He points out that even among the people who are curious enough and interested enough in furthering their knowledge that they read blogs like his, very few read the most important non-fiction books. He guesses that less than 10% of the people who read his blog ever read one of his books. He says that for many people, the idea of books brings back bad memories of school, and even if they want to learn, they don't want to spend their spare time doing school stuff now.

He hits one of the reasons that I believe so strongly in unschooling right on the head. I didn't send my youngest son to a regular school until well after he could read and write. The base of his education started at home, and both he and I are looking forward to his days returning to home education again.* My eldest son did the school thing until he was 10, and then homeschooled on and off until he started at Washing State University a short while before his 17th birthday. Both boys are huge book lovers. Both boys study many things that are not part of their regular curricula today, independently and rigorously.

Why do they do this? Because they don't equate studying with strict authority, fear of consequences, or boredom in the classroom. Their curiosity has been tended like a plant, and it has grown along with their abilities to seek out answers. They have been given the tools to explore the world around them, and encouraged to reach out beyond their own boundaries.

There is nothing on Seth Godin's list of what you get from school that you can't get while homeschooling. Learning at home does not mean learning only at home or only with your parents. Unschooling in particular means learning from experience and the world around you and all of the many resources that you have available to you, from books and computers to neighbors and tutors and beyond.

My eldest son learned about business by starting his own small business at age 12 in the UK. And then another in Seattle at age 14. And another at college at age 17. Along the way he asked many adults for help and advice, learned how to do important research on his own and how to get other people to buy into his projects and dreams and to invest their time, their money, or their resources to help him build things. He didn't study in the framework of a specific course, but he did take some classes and workshops along the way.

My daughter goes to an excellent public school, and has been in that school system for most of her life. She likes going to school, and she thrives on it. During the one year that she spent here in Israel, she even shocked her 10th grade teachers with how quickly she learned Hebrew and how well she did on exams when they had expected absolutely nothing from her at all. However, when you take her out of a school-based learning situation, she doesn't reach further. She doesn't follow her own questions to see where they will lead. She barely ever reads fiction books just for fun, and she never reads non-fiction just for fun.

I fear that school squelches creativity and curiosity. It demands conformity and little more. It rewards you for doing exactly what you are assigned, no more or less. It treats tangential explorations as a waste of time.

I'm as proud of her as a mother can be. How could I not be? She plays the viola in the school orchestra, had a part in the school play this past Fall, plays basketball for her school, gets excellent grades and was even invited to a program where she can take courses at UC Berkeley while still in high school! My daughter, as they say, is The Awesome.

I know that she has wide open doors of opportunity because of her success in school. Still, I hope that once she gets beyond her school years she will learn, like I did, to unschool her self, and love the process of learning for its own sake.


* The young one is in public school currently because I've run out of ideas for how else to get him to learn the language of the country where we've been living for two years now. The deal is that when he can read books in Hebrew and understand them the way he does with English books, then he can come back to Homeschooling. Don't tell him this, but it's really only a one year experiment. If he doesn't want to go to school next year, I'm not going to make him, even if his Hebrew isn't at the level I'd like it to be. I'll just have to find another solution for that educational issue.

Friday, January 23, 2009

Firefox always starting in offline mode?

I got a new laptop a little over a month ago and ever since the first day I've had an annoying little problem with Firefox. Whenever it started, it was stuck in "work offline" mode. I checked the user prefs in my .mozilla folder, and they said that I should be fine. (There is a setting for starting the browser offline, but it was set to false.)

As with many minor annoyances that don't actually stop me from getting work done, I mostly left the problem alone and just looked it up on Google every so often to see if I could find a solution. Mostly, I only found other Linux users complaining of the problem, but no one who had actually fixed it. Today I saw a fix that seemed unlikely, but I tried it anyway.

sudo apt-get remove network-manager

I didn't really need Network Manager anyway, since it wasn't recognizing my wireless card and I have to use iwconfig on the command line to bring my wireless connection up. And, whaddya know? It works!

From what I've been able to gather, Firefox asks your computer if you are logged into the network, rather than actually trying to connect to a server and then giving up when it doesn't work. Since the network configuration tool that Firefox was talking to didn't know what was really going on with my network connectivity, it gave false information and Firefox "saved me from a 404" by setting the mode to "work offline". How annoying.

This is one of those places where I have to point out to those who want everything to be automatic that we just aren't there yet. There has to be a way for the human to step in and say, "Wo! You got it wrong!" and what the human says should trump what other computer programs are telling you. In Firefox, that could translate into a setting something like "Ignore network manager connection awareness".

If you are a Linux user with this problem and don't want to manage your network through the Linux command line tools like ifconfig, iwconfig and dhclient, I'm afraid I'm not sure what to tell you. There may be another gui network tool you can use, but I am not familiar with any. So, either you'll have to keep un-checking the "work offline" box when you load Firefox, or else you should start reading man ifconfig, man iwlist, man iwconfig and man dhclient.

Sorry I'm not more helpful today.

Wednesday, December 24, 2008

Where the computer ends and the entertainment center begins

A little incident with my nine year old son got me to thinking a bit about how we define computers in our lives and how we interact with them on different levels. There has been a lot of scholarly talk about exactly this, and I'm not really adding anything to the discussion except a tidbit of personal experience. Still, perhaps this thought will get you thinking a bit, too.

First, the story:

Yesterday, the aforementioned nine year old boy was playing his favorite online game.* A certain incident inside the game bubbled over, and my boy completely lost his cool. From my work spot in my bedroom I heard him pick up the keyboard and slam it on the desk. So, I told him to get off the computer and then I banned him from the computer for the rest of the day plus all of today.

Now, let me explain something before I go on. I have a theory of discipline which is very clear. Punishments should, whenever possible, be directly related to the deeds that brought them on. So, when he behaved inappropriately with the computer, my response was simple. No more computer for a period of time. The end. That didn't mean that we couldn't go watch a movie last night, or have other fun. But the computer was lost to him.

However, and heres where the story turns into a philosophical discussion about technology, at this very moment he is watching the Nightmare Before Christmas in the living room.

So what, right? I just said that being banned from the computer didn't mean that he was banned from TV. Well... we don't have a TV per se. Well, we do. The big monitor that we watch movies and serial shows on is, in fact, a TV as well as a monitor. But, we don't use it to connect to the airwaves or to cable TV or to satellite TV. The TV is just a monitor, connected to the desktop computer in the living room. So, my son is watching a movie on the computer.

Is that OK?

Yes, I think it is. I wasn't really banning him from watching shows, like I said before. I also wasn't banning him from listening to the radio. (We also get our "radio" from sites like last.fm) What I really banned him from was using the keyboard and mouse to interact with the computer. I banned him from games and web browsing and story writing on the computer. I set up the movie and hit play, so it's OK.

I wonder if, 20 years from now, I would still have the same approach. I mean, will I still think of the passive forms of entertainment as being different and separate from the computer itself? Will I still think of the computer in terms of its specific uses? Or will I think of it as just being "the computer", whatever I'm doing? I think I know the answer to that.

Despite the fact that devices are converging, mixing multiple, sometimes highly specialized uses into a single gadget, 20 years from now we'll be defining the machines based on their uses not based on the amorphous concept of "computer".

We don't generally think of our cell phones as computers, but they definitely are, and they are becoming more and more PC-like every day. My phone is a camera. It's better than many standalone digital cameras out there with it's 5 megapixel images, automatic or manual focus and zoom, digital video at regular frame rates or 120fps for slow motion video... But my phone is really a computer above all else. If you had any doubt whatsoever, the built in video editing software right on the phone should clue you in.

More and more of us have multiple desktop and/or laptop computers in the house, but far more people have multiple computers in the home and don't even realize it. Whether those computers come in the form of phones or cameras or kitchen gadgets or even computerized heating and air conditioning systems.

In Star Trek, the ship is the computer, and whether you realize it or not, we're there already. Your car is already computerized from bumper to bumper. You may not be talking to your car yet, but that's not for lack of technology. It's so that car companies can keep a certain layer of luxury available for their more expensive cars.

In the 1990's the word "convergence" was a buzzword applied to the idea that we would soon be watching TV over the Internet. As usual, the realities of technology were predicted earlier and much more accurately by Sci-Fi authors than business people.


* I think I ought to write another post soon about parenting in the Internet age, using this game as an example, too. One of the things about this game is that when a kid signs up, their parents are automatically given an account, too, and encouraged to play *with* their kids. That's totally cool but a) I don't have as much free time as my kid and b) when I am involved, I'm not always sure when I should jump in to break up disagreements and when I should let the kids work it out on their own. It's not always as clear as in real life... as I said, another post on that soon.

Thursday, December 18, 2008

Kernel driver changes

I learned how to add in or swap out a Linux kernel module today. Kinda cool.

Let's start with the problem. My new laptop has both a wireless card AND an Ethernet card that are incompatible with Ubuntu Linux. So, after a little bit of testing and research, my ever patient friend, savior and all things *nix tutor discovered that the problem was that Ubuntu picks the wrong kernel driver for the Ethernet card on this machine and that it didn't have the wireless driver at all.

Just for extra learning goodness (or kharma or something), after my friend did the whole process to get my networking up and running, the Ubuntu updater updated the kernel and wiped out all his work. That just meant that I got to do the whole process myself, with him reminding me of the steps as I went.

So, the steps: First we downloaded the source code for the drivers. Unpacked the tarballs, followed the directions to compile the drivers.

With one of the drivers, the make install target did the copying of the kernel object into the right place for us. With the other driver, we needed to do that ourselves. To do that we found the ".ko" file in amongst the compiled code and copied it to the correct directory under /lib/modules/.

In the case of the Ethernet card, we needed to blacklist the wrong module as well, just to make sure that it didn't get loaded again by accident. To do that, we headed over to /etc/modprobe.d/blacklist and edited the list to include the bad driver. (Bad, bad driver! Don't come back!!)

Next
depmod -a
runs through your kernel and makes sure that all of the dependencies are there. It takes kind of a long time to run, because it goes through all of your kernel files.

Then use
modprobe [module]
where [module] is the name of your module, of course, to get the driver up and running.

Use
lsmod
to check to see if your modules are there.

We tested the whole thing by creating a boot image with our modified kernel. We did that with
mkinitramfs -o /boot/initrd.img-2.6.27-9-generic.new `uname -r`
and then we created an entry in grub at /etc/grub/menu.lst for the new image. The command mkinitramfs creates a special file with all the kernel information that the system needs to boot. The name that I used was based on the existing file for the pre-modified kernel, but with .new on the end. That was so that we'd know which was which, of course, and so that we'd know what to copy over top of later.

After booting into the modified kernel with out a problem, we went back and removed the extra grub entry, and moved the .new version of the image over top of the normal version. Now the modified kernel is my kernel and I have Ethernet AND wireless networking. Yay!


In case you are wondering, my new laptop is an LG R510. (My 9yo son says the LG stands for "Lawful Good". You think I'm raising a geek?) The drivers it needed are Realtek Ethernet and Ralink Wireless.

Monday, December 8, 2008

Creating a bootable USB disk

With all the MID stuff I've been doing lately, I've had need to create bootable USB disks from img files twice now. As noted previously, I am a dork, so I always forget how to do things like this that I don't do terribly often. To save myself heartache and search time, here are the destructions instructions in short:

  1. Get .img file for the OS you need. (via download, Moblin image creator, or whatever)

  2. Find out which /dev your USB disk is.

    1. before you put your USB disk into the computer, type
      ls /dev/sd*

    2. after you put your USB disk into the computer, do that again.
      The new entry is your USB disk

  3. Run dd to copy the image to the disk
    sudo dd if=/path/to/imagefile.img of=/dev/yourUSB
    (obviously, you wanna replace those paths with the correct info)



That should do it. It takes a little while, so don't freak out. You can check to make sure it's working by opening another terminal window and running
ls /path/to/usb
where /path/to/usb is the path that you would usually use to see the files on that USB disk. You'll get some gobbeldy gook, but that's fine. It means it's working.

You can get more details at this article on the Intel site.

Sunday, December 7, 2008

Compiz-Fusion: Some basic commands

So, it dawned on me the other day while I was watching a colleague zoom through windows and workspaces with keystrokes that I am not using all the juicy goodness of my desktop GUI. Compiz-fusion is installed by default on Ubuntu 8.10, but I'd never bothered to figure out how to use it properly. So, today I'm learning a bit and writing in commands I find here.

First, a definition. The super key is the Windows key on Windows keyboards. I have not the foggiest notion what it would be on other keyboards.

Next, make sure that you have the compiz config settings manager (aka CCSM). It should be under preferences and it doesn't need sudo acces to run. If you don't have it (I didn't even though I did have compiz-fusion installed) then do this:
sudo apt-get install compizconfig-settings-manager

If you go into CCSM and then choose General Options, and then choose the tab for key bindings, you'll get a listing of all the default key bindings. You can change them there, if you like.

For quick reference, here are some of the defaults I find useful.









Close window   alt-F4
Show Main Menu   alt-F1 (use arrows to navigate, esc to escape)
Run Dialog   alt-F (for apps that may not have a handy-dandy menu link)
Unmaximize window   alt-F5
Minimize window   alt-F9
Maximize window   alt-F10
Window menu   alt-space
Show desktop   ctrl-alt-d


Expo:
See all the Worspaces at once: super-E
Use the arrow keys to navigate around. Use Enter to exit that view and go into the workspace you have highlighted.

Ring Switcher:
This gives you a view kind of like when you flip through CD and DVD covers on iTunes, only the view is of your available windows.
Clockwise rotation: super-tab
Counter-clockwise rotation: super-shift-tab
Let go to land on the window you see in the center of the screen.

Scale:
This is the tool that has Exposition-like effects. Your desktop turns into a rotatable cube.
ctrl-alt + left and right arrows turns the cube.
ctrl-alt-down arrow flattens the cube.


There's a lot more that you can do, but those are the bits that I've played with so far and liked enough to keep activated. I like the water effects, but they are a bit distracting.

I like the annotation tool, but don't really need it on this computer. It would be way cool for presentations, though, so check it out if you do sales presentations, tech-talks or are a teacher.

Have fun with it!

edit: yes, yes, I see the big gaping hole in the view before the table. I'll fix it later, sorry!!

Thursday, December 4, 2008

When to write a script in a language you don't know

Sometimes there is a long, repetitive task that you know would be much better off if done by a small script, but the problem is that you don't know how to use the tools available at the moment.

One of my problems is that I never remember anything about a language or system if I'm not using it often. It's like I do a brain dump in order to make room for new stuff when I switch from one technology to the next. That means that even though I *have* done considerable shell scripting in the past, I can't remember a darn thing when I need it for a one off project. So, I know that I'd be better off writing a script, but I end up doing the job by hand anyway because it would take longer to look up language bits than it does to hit arrow up, back, back, back,... delete, delete,... paste.... a few times through.

The whole time I'm doing that, though, I'm thinking, "I could solve this like this in PHP or like that in Perl" and none of it matters, because at the moment I'm working in a very limited embedded linux system with neither of those languages on board.

So, what do YOU do in a case like that? Do you go look up the language ref for what IS available to you, even if it will take longer than the cut-and-paste for the task? Or do you just do the task manually?

Friday, November 28, 2008

Nvidia controls aren't in the GUI menus

My computer at home has an Nvidia graphics card, and it's running Ubuntu 8.10 at the moment. We have the living room set up as a combo family room/dining room/play space/study/office with an open layout and furniture sort of compartmentalizing the areas for each usage. We do not have cable TV, but we do have a nice TV/computer monitor that we watch movies and YouTube videos on. We pipe in all video content from the computer, whether it's from a DVD or from the Net. In order to make that work, we have the TV monitor set up as a secondary monitor plugged into the video card.

The problem: There was no GUI menu item for the Nvidia driver settings. The display settings that System->Preferences->ScreenResolution gives aren't the right thing at all.

The solution: You *may* have a link in System->Administration for Nvidia X-Server settings. If so, that's what you want. If not, open up a terminal window and type

gksudo nvidia-settings


It will ask you for your password, and then you can set up the secondary monitor as you like.

If you want to make that a selection in the System->Administration menu, right click on the word "System" in the top panel, then choose "edit menus". From there you can add a menu item for the above command.

Thursday, November 20, 2008

Bash Readline Commands

One of the cool things about most versions of the Linux command line is that you get a built in text editor to allow you to move around and edit your line easily. I generally use the Bash shell, and that comes with Readline. I know a few commands by heart and use them constantly, but there are more that never quite stick in my head. So, I figured I'd write about them here so they'd be easy to find and, possibly, pressed a little more firmly into my gray matter by virtue of having written them down.

Ctrl-e Go to the end of the line
Ctrl-a Go to the start of the line
Alt-f Go forward one word (actually Meta-f, but Meta is usually Alt)
Alt-b Go backward one word


Ctrl-k Kill the text from the current cursor point to the end of the line
Alt-d Kill the text from the current cursor to the end of the word
Alt-DEL Kill the text from the current cursor to the start of the word
Ctrl-w Kill the text from the current cursor to the previous white space
Alt-DEL and Ctrl-w are different because the "word boundaries" are different. Alt-DEL will stop at punctuation and other non-word characters. Ctrl-w does not.
Ctrl-y Yank (paste) the most recently killed text into place at the current cursor


Ctrl-l Clear the screen, putting the current line at the top

Sunday, October 19, 2008

Wireless connection from the command line

If ever you find yourself stuck with a *Nix box that won't boot into any kind of comfy graphical interface, and you need to connect to a wireless internet connection so that you can look stuff up and maybe solve your problem, here's a helpful tip:

There is a wireless networking utility very much like ifconfig called iwconfig. When you have a chance (and preferably before you really need it) check out the man page for it. Here are some quick and dirty instructions, in case you are desperate right now.

To find out what wireless networks are available to you, type
iwconfig wlan0 scan (see comments)
iwlist wlan0 scan

To attach to an open, non-encrypted network, type
iwconfig wlan0 essid netname
where netname is the essid of the network you want to connect to.

If you only have encrypted networks available, you might be in a bit more trouble. I haven't actually managed to get that working at all yet, though theoretically, it should work something like this:
iwconfig wlan0 key s:password
iwconfig wlan0 essid netname

where password is your password and netname is the essid of the network you want. The s: means that the password is in string format. If you know the hex version of your password, then instead of saying s:password you'd just type in the hex of the password like this:
iwconfig wlan0 key 0123-4567-89

Good luck getting your GUI fixed!

Sunday, October 12, 2008

Stealing from Ubuntu to pay Midinux

I'm busy trying to get an application to work on Midinux MID devices. There's a problem, though, because a chunk of libraries that I need are not available in Midinux for some reason. So, I'm snagging the libraries I need from the Ubuntu os I'm running on my desktop and converting them to run on the MIDs with Midinux. I can do this because, for reasons I don't understand at all, Midinux is compiled as an i386 system even though it's sitting on a Mobile Internet Device with an Atom CPU (that's lpia architecture, in case you didn't know).

You can find lots of debs (those that you have installed on your Ubuntu desktop, that is) in /var/cache/apt/archives/ . The advantage of that is that you don't have to go hunting very far. If you can't find the deb that you are looking for there, try searching http://packages.ubuntu.com

Once you have the packages that you need, go ahead and change the debs into rpms using Alien. The command looks like this:
> alien --to-rpm the-package.whatever.deb

With that done, stick the package someplace where you can download it to your Midinux device, then pop over into the X-Terminal and into the directory where the rpm you need to install is sitting. Install the rpm with:
> rpm --install the-package-whatever.rpm

And there you go!

Tuesday, October 7, 2008

Ahhhh... This place has PACKAGES

Having gotten my blasted scratchbox working, I didn't seem to be any closer to compiling anything. I needed several packages and they weren't in the default packages available in the initial set up. Why, o why don't they give you any useful repositories right from the start in your scratchbox setup? I mean, COMEON!

So, the good news is that Hacking the N810 pointed me in the direction of http://gronmayer.com/it which is now officially my second savior of the day (right after Gnuton).

At Gronmayer.com I was able to search for the packages I was looking for, find out what repositories they live in and set up my /etc/apt/sources.list in the scratchbox accordingly.

Just remember, you have to set up configuration files like the /etc/apt/sources.list for EACH target you are running in scratchbox, especially if you plan to be doing cross compilation.

Maemo Scratchbox Hell

That was SO much harder than yesterday. So, maybe it wasn't the same problem.

When trying to install the maemo-sdk-runtime in the ARMEL target of my scratchbox, I kept getting this HUGE error that started
[sbox-DIABLO_ARMEL: ~] > fakeroot apt-get install maemo-sdk-runtime
Reading package lists... Done
Building dependency tree... Done
The following NEW packages will be installed:
maemo-sdk-runtime
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
27 not fully installed or removed.
Need to get 0B/1890B of archives.
After unpacking 32.8kB of additional disk space will be used.
WARNING: The following packages cannot be authenticated!
maemo-sdk-runtime
Install these packages without verification [y/N]? y
/scratchbox/tools/bin/sh: line 1: /usr/sbin/dpkg-preconfigure: No such file or directory
Selecting previously deselected package maemo-sdk-runtime.
(Reading database ... 16920 files and directories currently installed.)
Unpacking maemo-sdk-runtime (from .../maemo-sdk-runtime_1.0_all.deb) ...
Setting up gconf2 (2.16.0-1osso14) ...
/scratchbox/tools/bin/chown: `messagebus:messagebus': invalid user
dpkg: error processing gconf2 (--configure):
subprocess post-installation script returned error exit status 1

and ended
E: Sub-process /scratchbox/devkits/debian-etch/bin/dpkg returned an error code (1)



I'll now list ALL the things that it took to get this working...

Let us start with /etc/sysctl.conf
add the lines
vm.mmap_min_addr = 4096
net.ipv4.ip_local_port_range = 1024 65535
vm.vdso_enabled = 0

to this file. I recommend doing a search for each of those setting before you add the new lines. If you have the settings in there, comment them out, and then put the changed setting directly underneath with a comment about WHY you are doing this. (That's to save you heartache later if it breaks something else.)

Next, I ran apt-get install -f in both my normal shell and in the scratchbox. I used apt-get autoremove to get rid of some no-longer-needed packages in my regular shell.

Gnuton reported several problems and fixes and although I didn't have his 'messagebus:messagebus': invalid user problem I still did
cd /var/cache/apt/archives
fakeroot dpkg -i *dbus*

in the scratchbox, just in case.

Finally, I followed his advice and did
cp /usr/sbin/dpkg-preconfigure /scratchbox/users/lisha/targets/DIABLO_ARMEL/usr/sbin

and finally the &$%#! fakeroot apt-get install maemo-sdk-runtime worked.

Sometimes I just don't learn

I created this blog for the specific purpose of saving me from my own terrible memory. Again and again I get myself into deja vu situations where I can distinctly remember getting into this problem before, but I can't remember hoow I solved it. The number of times that has happened has dropped precipitously since I started blogging my most annoying problems here. But, despite that fact, I managed to forget how really important it is to my learning process to write these things here.

Yesterday, my maemo development scratchbox and I had a little disagreement regarding available packages and repositories. In the end, I solved the problem, but only in the i386 target. Today I cant get the armel target to work and I have no idea what the fix was yesterday. This is a serious pain.

Not to worry, I was better than the problem yesterday, and after wasting a bit more time, I shall beat it again. When I do, I'll be sure to blog the solution here.

Thursday, October 2, 2008

Thoughts on MID's

MID stands for Mobile Internet Device.

These devices are small tablet computers, some with and some without a physical keyboard, that allow you to connect to the Internet and run a number of applications in miniature versions. Some smart phones are basically MID's that happen to also be phones. I'd put the iphone into that category, as well as any phone with a screen that size and equivalent functionality. So, in my book, the Nokia N80 doesn't count (too small of a screen for comfortable web-browsing) but the HTC Android phone does count. My broad description, including phones, is not necessarily canonical. I do think that it's logical, however.

These devices generally have a browser, some sort of IM/chat facility, some sort of office document reader and sometimes document editors, a music and/or video player, and games. Some MID's run a version of Windows Vista. Others run a version of Linux. Of course, if you know me at all, you know that I want Linux on my MID, because I want freedom (as in speech) with my software as much as is possible. The good news is that it's possible to run a version of Linux on nearly all MID's today thanks to the work of groups like Moblin.org. So, knowing that, what's really important in an MID?

There are a few harware things that I think are vital. A usable keyboard is way up there, in my estimation, although a really good *handwriting recognition interface would satisfy me just as well. A **screen size that allows for easy reading is important, too. A camera is nice, but not vital, since my main digital camera is generally on my cell phone.

Software-wise, I don't want to be hobbled. I don't want the system to lock me out of the terminal window, or force me into contortions of geekish heroics just to install non-approved software. I don't want Big Brother telling me what I can and cannot run on my MID. It's mine, gosh darn it. If I bought it, I want to use it however I choose. Can you imagine buying a refrigerator and being told that your warranty would be void if you chose to refrigerate any non-food items? What if you choose to refrigerate photographic film? Or pre-cool glasses so that you can have a proper cold one?

The Samsung Q1 is my favorite device in terms of screen size and heft. I feel like I could get WORK done on that thing, as well as play, read RSS feeds on the way to work and otherwise do most of the tasks that make up most of my non-programming computing life. What I don't like about it is the keyboard. Actually, the keyboard is ALMOST right. The placement under the user's thumbs at the top of the screen is fantastic, but it's just too hard to do shifting and number typing. Fix that, and the Samsung Q1 running an imaginary version of Moblin would be first choice all around.

I've played pretty extensively with the Lenovo ideapad U8, and I'd really *like* to like that device, too, but it just doesn't cut it for me. If I spoke and wrote Chinese as my primary language, my opinion would probably be a bit different. The stroke-based keypad on the telephone dial pad is probably a comfortable way to type Chinese. If you've done much smsing, though, you already know what a pain that kind of keypad is for extensive entry in most other writing systems. The fact that the midinux software on the device is super hobbled is also a pain. In early versions of the device you couldn't even get a terminal window unless you know the "cheat code", so to speak. (Ctrl-alt-backspace and then F2) In later versions, at least you'll have an x-terminal available by default. Still, the packaging system is wonky, and the GUI is funky and uncomfortable.

You may have noticed that when I was talking about the Samsung Q1 I wanted an imaginary version of Moblin. Well, that's a thing, see? Moblin just isn't what it could be, yet. I'm personally not all that thrilled about the fact that they've just changed from a debianish system to a red hattish system, either, but that's beside the point. The problem with Moblin on the devices that I've tried it with has been far more basic than that. The applications just aren't quite there yet. They, almost without exception, get things wrong when converting their interface into the smaller space. Buttons don't show up right. Text inputs get messed up. Scroll bars are in the wrong places or not there at all.

One of the biggest problems across the board with Moblin apps and system controls is that they are unaware of whether the screen keyboard is being used. That means that they hide important dialogs and even buttons under that keyboard in the screen real estate, and you simply can't DO anything. The only solution is to plug in an external keyboard to get some tasks done.

So far, the best all around experience I've had has been with the Nokia N810 running the new maemo version, 4.1.1 Diablo. It was easy to find and get software. It was easy to get into a terminal window and easy to do things there. The pull down keyboard was comfortable in my hands and I was able to type fairly quickly with it. The touch screen worked well, and the applications were lovely. I didn't see any of the problems that I've encountered with Moblin apps, which makes me wonder why there maemo apps aren't being ported to Moblin instead of desktop apps getting Moblinized.

I've got this fantasy of a cell phone/MID device that will be bigger than the Nokia N810 but smaller than the Samsung Q1, have enough storage to make it useful as a multimedia device, run on Intel ATOM architecture or an equivalent for power and speed, have a usable keyboard AND handwriting recognition, a camera on the back (they are so useful for things like barcode reading!) and bluetooth so that I can connect an earpiece. Of course it will have wifi and 3G, because let's face it, there's no reason I should have to carry BOTH a telephone and this little baby, when I can have it all in one. Seriously, with a bluetooth earpiece it doesn't matter how big the device running the 3G connection is, and you really shouldn't be talking with the phone up to your face anyway! This device would either run maemo, which I think is an absolutely lovely OS, or else Android, which makes me all weak in the knees and giddy with excitement at the thought.

When this device is born I will love it, take good care of it, and write software for it. It'll come with me on the bus and on the plane and in doctor's and vet's waiting rooms. It will sit with me in coffee shops, and hang out with me on the couch in my living room. I think I've been dreaming of this device since I was a kid, while sitting in front of the tv, watching endless Star Trek reruns. I'm wondering when I'm going to get to adopt buy one.

*Am I the only one on the planet who misses the Palm Graffiti?

**I think I'm killing my eyes reading RSS feeds on my way to work on the tiny N80 screen.