<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5060354787311498729</id><updated>2011-11-27T15:28:08.615-08:00</updated><category term='cli'/><category term='phones'/><category term='web'/><category term='dd'/><category term='localization'/><category term='l10n'/><category term='printing'/><category term='cups'/><category term='adept'/><category term='MIDs'/><category term='firefox'/><category term='groupware'/><category term='family'/><category term='scp'/><category term='bzip'/><category term='unschool'/><category term='kids'/><category term='notes'/><category term='packages'/><category term='razr v3'/><category term='Fring'/><category term='mysql'/><category term='lock'/><category term='security'/><category term='object'/><category term='package manager'/><category term='ubiquity'/><category term='groups'/><category term='philosophy'/><category term='school'/><category term='Gnome'/><category term='networking'/><category term='root'/><category term='maemo'/><category term='android'/><category term='iPhone'/><category term='desktop'/><category term='secure copy'/><category term='drivers'/><category term='mac'/><category term='HTML'/><category term='highlighting'/><category term='regular expressions'/><category term='the future is sci-fi'/><category term='testing'/><category term='ubuntu'/><category term='moving'/><category term='sandbox'/><category term='users'/><category term='education'/><category term='mail'/><category term='multi-touch'/><category term='debugging'/><category term='developing'/><category term='W3C'/><category term='iframe'/><category term='homeschool'/><category term='passwords'/><category term='AJAX'/><category term='file compression'/><category term='hosts'/><category term='gzip'/><category term='rpm'/><category term='C++'/><category term='internationalization'/><category term='Nvidia'/><category term='new computer'/><category term='zimbra'/><category term='technology convergence'/><category term='user interface'/><category term='debian'/><category term='windows'/><category term='gettext'/><category term='XHTML'/><category term='motorola'/><category term='learning'/><category term='usability'/><category term='linux'/><category term='LAMP'/><category term='I18n'/><category term='shell script'/><category term='compiz-fusion'/><category term='research'/><category term='usb boot disk'/><category term='silliness'/><category term='parenting'/><category term='ssh'/><category term='deb'/><category term='alien'/><category term='tar'/><category term='crictor'/><category term='PHP'/><category term='wishlist'/><category term='Midinux'/><category term='wireless'/><category term='unix'/><category term='kernel'/><category term='history'/><category term='drupal'/><category term='mozilla'/><category term='command line'/><category term='data'/><category term='AdaLovelaceDay09'/><title type='text'>Know where the ledge is...</title><subtitle type='html'>Tidbits about how to do things so that I won't forget. Some might even be useful to other folks, who knows? 

Topics: Linux, svn, php, shell scripting... and whatever else is in the tags</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>50</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-366646781111080166</id><published>2010-07-05T03:06:00.000-07:00</published><updated>2010-07-05T03:06:12.493-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='moving'/><title type='text'>Moving the site...</title><content type='html'>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.&lt;br /&gt;&lt;br /&gt;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&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;I'm looking forward to seeing you at the new site!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-366646781111080166?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/366646781111080166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=366646781111080166' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/366646781111080166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/366646781111080166'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2010/07/moving-site.html' title='Moving the site...'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-1405178591373242010</id><published>2009-03-23T14:47:00.000-07:00</published><updated>2009-03-25T03:16:46.403-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='family'/><category scheme='http://www.blogger.com/atom/ns#' term='history'/><category scheme='http://www.blogger.com/atom/ns#' term='AdaLovelaceDay09'/><title type='text'>A family history of computing</title><content type='html'>&lt;i&gt;Ed. note: This post is part of the &lt;a href="http://findingada.com/"&gt;Ada Lovelace Day&lt;/a&gt; blog posting event on March 24, 2009.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;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. &lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;"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..."&lt;br /&gt;&lt;br /&gt;But my great-grandfather would not be moved. He had found his child. He was going to bring this one home, and no other.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;And she was spoiled.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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. &lt;br /&gt;&lt;br /&gt;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. &lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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. &lt;br /&gt;&lt;br /&gt;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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-1405178591373242010?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/1405178591373242010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=1405178591373242010' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/1405178591373242010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/1405178591373242010'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2009/03/family-history-of-computing.html' title='A family history of computing'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-7789800642403273214</id><published>2009-03-07T00:35:00.000-08:00</published><updated>2009-03-07T00:39:05.204-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kids'/><category scheme='http://www.blogger.com/atom/ns#' term='homeschool'/><category scheme='http://www.blogger.com/atom/ns#' term='education'/><category scheme='http://www.blogger.com/atom/ns#' term='family'/><title type='text'>Why I love Homeschooling</title><content type='html'>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. &lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;I love homeschooling because it is limitless, borderless, boundaryless, and immensely fulfilling.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-7789800642403273214?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/7789800642403273214/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=7789800642403273214' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/7789800642403273214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/7789800642403273214'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2009/03/why-i-love-homeschooling.html' title='Why I love Homeschooling'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-7022229004231798218</id><published>2009-03-02T07:46:00.000-08:00</published><updated>2009-03-02T07:57:17.869-08:00</updated><title type='text'>A new kind of Nigerian Scam?</title><content type='html'>If you are not familiar with the &lt;a href="http://www.snopes.com/crime/fraud/nigeria.asp" target="_new"&gt;Nigerian Scam&lt;/a&gt; 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. &lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;Now, I'm not sure what's going on here, or how the scam works, but I am quite certain that it &lt;b&gt;is&lt;/b&gt; 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. &lt;br /&gt;&lt;br /&gt;Have you seen this scam? Do you know the rest of the story?&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Move on with your career: Manager (Remote, part-time vacancy; 2500 USD/month, No investment)&lt;br /&gt;Marie Green &lt;ortiz@internationalsos.com&gt;  Mon, Mar 2, 2009 at 11:19 AM&lt;br /&gt;To: name@address.com&lt;br /&gt;Dear Job Seeker,&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;An expansion process, has inevitably triggered the underscored insurance company to form complementary positions within the market of operation.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;Informational table is presented below, to briefly outline the opening.&lt;br /&gt;&lt;br /&gt;* Benefits and privileges:&lt;br /&gt;&lt;br /&gt;-Feasible career advancement opportunities.&lt;br /&gt;-Extensive tutelage (probation period) for the first two months.&lt;br /&gt;-Fixed payout, resulting in 2000 USD monthly.&lt;br /&gt;-Outstanding reimbursement plan.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Requirements:&lt;br /&gt;&lt;br /&gt;- Accuracy and leadership in the assigned operations&lt;br /&gt;- Interpersonal and communication skills.&lt;br /&gt;- Swift decision-making.&lt;br /&gt;- Honesty and law obedience.&lt;br /&gt;- Proficient use of Microsoft Office.&lt;br /&gt;&lt;br /&gt;* Primary responsibilities:&lt;br /&gt;&lt;br /&gt;- Preparing invoices, compiling itemized charges and submitting bills concerning insurance reimbursement enquiries.&lt;br /&gt;- Commencing insurance operations (reimbursement cases).&lt;br /&gt;- Consolidating viable documentation, records and paperwork.&lt;br /&gt;- This is not insurance sales position and you don't need to sell insurance, this is Money Manager vacancy.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you want to apply please send all your questions and contact information ONLY to e-mail:  HRManagerPIC37@gmail.com&lt;br /&gt;We're looking forward to our further communication.&lt;br /&gt;&lt;br /&gt;Julie Mathews. HR department.&lt;br /&gt;ID:  152032351851642108915&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;hr /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-7022229004231798218?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/7022229004231798218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=7022229004231798218' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/7022229004231798218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/7022229004231798218'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2009/03/new-kind-of-nigerian-scam.html' title='A new kind of Nigerian Scam?'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-8676929419182975585</id><published>2009-02-23T03:25:00.000-08:00</published><updated>2009-02-23T03:26:46.125-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wireless'/><title type='text'>Coffee shop Internet problem</title><content type='html'>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. &lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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. &lt;br /&gt;&lt;br /&gt;Anyone got any ideas what's happening here?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-8676929419182975585?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/8676929419182975585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=8676929419182975585' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/8676929419182975585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/8676929419182975585'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2009/02/coffee-shop-internet-problem.html' title='Coffee shop Internet problem'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-5619583876718585395</id><published>2009-02-11T13:14:00.000-08:00</published><updated>2009-02-11T13:57:45.216-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='homeschool'/><category scheme='http://www.blogger.com/atom/ns#' term='education'/><category scheme='http://www.blogger.com/atom/ns#' term='unschool'/><category scheme='http://www.blogger.com/atom/ns#' term='learning'/><category scheme='http://www.blogger.com/atom/ns#' term='school'/><title type='text'>Can you say "unschool"?</title><content type='html'>Seth Godin wrote about what school is good for in his post on &lt;a href="http://sethgodin.typepad.com/seths_blog/2009/01/super-bowl-laziness.html" target="new"&gt;January 31st&lt;/a&gt;, and then followed it up with another post on &lt;a href="http://sethgodin.typepad.com/seths_blog/2009/02/learning-all-the-time.html" target="_new"&gt;February 8th&lt;/a&gt; in which he discussed the fact that many people just stop actively trying to learn the day that they graduate from school. &lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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. &lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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. &lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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. &lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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. &lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* 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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-5619583876718585395?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/5619583876718585395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=5619583876718585395' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/5619583876718585395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/5619583876718585395'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2009/02/can-you-say-unschool.html' title='Can you say &quot;unschool&quot;?'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-3447594833463929947</id><published>2009-01-23T15:15:00.000-08:00</published><updated>2009-01-23T15:32:36.635-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='cli'/><category scheme='http://www.blogger.com/atom/ns#' term='command line'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>Firefox always starting in offline mode?</title><content type='html'>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.) &lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get remove network-manager&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;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!&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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".&lt;br /&gt;&lt;br /&gt;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. &lt;br /&gt;&lt;br /&gt;Sorry I'm not more helpful today.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-3447594833463929947?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/3447594833463929947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=3447594833463929947' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/3447594833463929947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/3447594833463929947'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2009/01/firefox-always-starting-in-offline-mode.html' title='Firefox always starting in offline mode?'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-2124086506519910845</id><published>2008-12-24T03:09:00.000-08:00</published><updated>2008-12-24T04:46:31.594-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology convergence'/><category scheme='http://www.blogger.com/atom/ns#' term='the future is sci-fi'/><category scheme='http://www.blogger.com/atom/ns#' term='parenting'/><title type='text'>Where the computer ends and the entertainment center begins</title><content type='html'>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.&lt;br /&gt;&lt;br /&gt;First, the story:&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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. &lt;br /&gt;&lt;br /&gt;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 &lt;span style="font-weight:bold;"&gt;on the computer&lt;/span&gt;. &lt;br /&gt;&lt;br /&gt;Is that OK?&lt;br /&gt;&lt;br /&gt;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 &lt;a href="http://www.last.fm/user/elishevita" target="_new"&gt;last.fm&lt;/a&gt;) 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. &lt;br /&gt;&lt;br /&gt;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. &lt;br /&gt;&lt;br /&gt;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".&lt;br /&gt;&lt;br /&gt;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 &lt;i&gt;right on the phone&lt;/i&gt; should clue you in.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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. &lt;br /&gt;&lt;br /&gt;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. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:9px;color:black;font-weight:bold"&gt;* 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.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-2124086506519910845?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/2124086506519910845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=2124086506519910845' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/2124086506519910845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/2124086506519910845'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2008/12/where-computer-ends-and-entertainment.html' title='Where the computer ends and the entertainment center begins'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-3134314458196098254</id><published>2008-12-18T18:37:00.000-08:00</published><updated>2008-12-22T03:30:33.052-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='command line'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='drivers'/><title type='text'>Kernel driver changes</title><content type='html'>I learned how to add in or swap out a Linux kernel module today. Kinda cool. &lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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. &lt;br /&gt;&lt;br /&gt;So, the steps: First we downloaded the source code for the drivers. Unpacked the tarballs, followed the directions to compile the drivers. &lt;br /&gt;&lt;br /&gt;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/.&lt;br /&gt;&lt;br /&gt;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!!)&lt;br /&gt;&lt;br /&gt;Next&lt;br /&gt;&lt;code&gt;depmod -a&lt;/code&gt;&lt;br /&gt;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. &lt;br /&gt;&lt;br /&gt;Then use&lt;br /&gt;&lt;code&gt;modprobe [module]&lt;/code&gt;&lt;br /&gt;where [module] is the name of your module, of course, to get the driver up and running.&lt;br /&gt;&lt;br /&gt;Use&lt;br /&gt;&lt;code&gt;lsmod&lt;/code&gt;&lt;br /&gt;to check to see if your modules are there.&lt;br /&gt;&lt;br /&gt;We tested the whole thing by creating a boot image with our modified kernel. We did that with&lt;br /&gt;&lt;code&gt;mkinitramfs -o /boot/initrd.img-2.6.27-9-generic.new `uname -r`&lt;/code&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;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 &lt;a href="ftp://210.51.181.211/cn/nic/r8168-8.009.00.tar.bz2"&gt;Realtek Ethernet&lt;/a&gt; and &lt;a href="http://www.ralinktech.com/ralink/Home/Support/Linux.html" target="_new"&gt;Ralink Wireless&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-3134314458196098254?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/3134314458196098254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=3134314458196098254' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/3134314458196098254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/3134314458196098254'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2008/12/color-me-kernel-hacker.html' title='Kernel driver changes'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-4431827238567556622</id><published>2008-12-08T07:21:00.001-08:00</published><updated>2008-12-24T04:20:25.883-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dd'/><category scheme='http://www.blogger.com/atom/ns#' term='MIDs'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='cli'/><category scheme='http://www.blogger.com/atom/ns#' term='command line'/><category scheme='http://www.blogger.com/atom/ns#' term='usb boot disk'/><title type='text'>Creating a bootable USB disk</title><content type='html'>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 &lt;strike&gt;destructions&lt;/strike&gt; instructions in short:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Get .img file for the OS you need. (via download, Moblin image creator, or whatever)&lt;/li&gt;&lt;br /&gt;&lt;li&gt; Find out which /dev your USB disk is.&lt;/li&gt;&lt;br /&gt;    &lt;ol style="list-style-type:lower-alpha"&gt;&lt;li&gt;before you put your USB disk into the computer, type&lt;br /&gt;    &lt;code&gt;ls /dev/sd*&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;after you put your USB disk into the computer, do that again.&lt;br /&gt;    The new entry is your USB disk&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;li&gt; Run dd to copy the image to the disk&lt;br /&gt;     &lt;code&gt;sudo dd if=/path/to/imagefile.img of=/dev/yourUSB&lt;/code&gt;&lt;br /&gt;    (obviously, you wanna replace those paths with the correct info)&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;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 &lt;br /&gt;&lt;code&gt;ls /path/to/usb&lt;/code&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;You can get more details at this &lt;a href="http://software.intel.com/en-us/articles/bootable-usb-key-from-image" target="_new"&gt;article on the Intel site&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-4431827238567556622?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/4431827238567556622/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=4431827238567556622' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/4431827238567556622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/4431827238567556622'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2008/12/creating-bootable-usb-disk.html' title='Creating a bootable USB disk'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-7854670191466488136</id><published>2008-12-07T02:27:00.001-08:00</published><updated>2008-12-07T08:45:05.666-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='compiz-fusion'/><category scheme='http://www.blogger.com/atom/ns#' term='desktop'/><title type='text'>Compiz-Fusion: Some basic commands</title><content type='html'>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. &lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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:&lt;br /&gt;&lt;code&gt;sudo apt-get install compizconfig-settings-manager&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;For quick reference, here are some of the defaults I find useful.&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Close window &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt; alt-F4 &lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Show Main Menu &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt; alt-F1  (use arrows to navigate, esc to escape)&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Run Dialog &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;   alt-F   (for apps that may not have a handy-dandy menu link)&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Unmaximize window &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt; alt-F5&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Minimize window &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;  alt-F9&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Maximize window &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt; alt-F10&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Window menu &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt; alt-space&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Show desktop &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt; ctrl-alt-d&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Expo:&lt;/span&gt;&lt;br /&gt;See all the Worspaces at once: super-E&lt;br /&gt;     Use the arrow keys to navigate around. Use Enter to exit that view and go into the workspace you have highlighted.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Ring Switcher:&lt;/span&gt;&lt;br /&gt;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.&lt;br /&gt;   Clockwise rotation: super-tab&lt;br /&gt;   Counter-clockwise rotation: super-shift-tab&lt;br /&gt;   Let go to land on the window you see in the center of the screen.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Scale:&lt;/span&gt;&lt;br /&gt;This is the tool that has Exposition-like effects. Your desktop turns into a rotatable cube.&lt;br /&gt;   ctrl-alt + left and right arrows turns the cube.&lt;br /&gt;   ctrl-alt-down arrow flattens the cube.&lt;br /&gt;    &lt;br /&gt;&lt;br /&gt;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. &lt;br /&gt;&lt;br /&gt;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. &lt;br /&gt;&lt;br /&gt;Have fun with it!&lt;br /&gt;&lt;br /&gt;edit: yes, yes, I see the big gaping hole in the view before the table. I'll fix it later, sorry!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-7854670191466488136?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/7854670191466488136/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=7854670191466488136' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/7854670191466488136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/7854670191466488136'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2008/12/compiz-fusion-some-basic-commands.html' title='Compiz-Fusion: Some basic commands'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-7997718299845059600</id><published>2008-12-04T01:27:00.000-08:00</published><updated>2008-12-04T01:35:52.591-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='philosophy'/><category scheme='http://www.blogger.com/atom/ns#' term='shell script'/><title type='text'>When to write a script in a language you don't know</title><content type='html'>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.&lt;br /&gt;&lt;br /&gt; 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.&lt;br /&gt;&lt;br /&gt;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. &lt;br /&gt;&lt;br /&gt;So, what do &lt;span style="font-weight:bold;"&gt;YOU&lt;/span&gt; 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?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-7997718299845059600?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/7997718299845059600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=7997718299845059600' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/7997718299845059600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/7997718299845059600'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2008/12/when-to-write-script-in-language-you.html' title='When to write a script in a language you don&apos;t know'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-104129878422351211</id><published>2008-11-28T05:53:00.000-08:00</published><updated>2008-11-28T06:05:08.739-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Gnome'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Nvidia'/><title type='text'>Nvidia controls aren't in the GUI menus</title><content type='html'>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. &lt;br /&gt;&lt;br /&gt;The problem: There was no GUI menu item for the Nvidia driver settings. The display settings that System-&gt;Preferences-&gt;ScreenResolution gives aren't the right thing at all. &lt;br /&gt;&lt;br /&gt;The solution: You *may* have a link in System-&gt;Administration for Nvidia X-Server settings. If so, that's what you want. If not, open up a terminal window and type&lt;br /&gt;&lt;code&gt;&lt;br /&gt;gksudo nvidia-settings&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;It will ask you for your password, and then you can set up the secondary monitor as you like.&lt;br /&gt;&lt;br /&gt;If you want to make that a selection in the System-&gt;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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-104129878422351211?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/104129878422351211/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=104129878422351211' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/104129878422351211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/104129878422351211'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2008/11/nvidia-controls-arent-in-gui-menus.html' title='Nvidia controls aren&apos;t in the GUI menus'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-6112310942323879788</id><published>2008-11-20T07:30:00.000-08:00</published><updated>2008-11-20T08:33:38.065-08:00</updated><title type='text'>Bash Readline Commands</title><content type='html'>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.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Ctrl-e &lt;/span&gt; Go to the end of the line&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Ctrl-a&lt;/span&gt;  Go to the start of the line &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Alt-f&lt;/span&gt;   Go forward one word (actually Meta-f, but Meta is usually Alt)&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Alt-b&lt;/span&gt;   Go backward one word &lt;br /&gt;&lt;hr style="width: 50%;height:2px;color:navy;" /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Ctrl-k&lt;/span&gt;  Kill the text from the current cursor point to the end of the line&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Alt-d&lt;/span&gt;   Kill the text from the current cursor to the end of the word&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Alt-DEL&lt;/span&gt;  Kill the text from the current cursor to the start of the word&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Ctrl-w&lt;/span&gt;   Kill the text from the current cursor to the previous white space&lt;br /&gt;  &lt;span style="font-style:italic;"&gt;Alt-DEL&lt;/span&gt; and &lt;span style="font-style:italic;"&gt;Ctrl-w&lt;/span&gt; are different because the "word boundaries" are different. &lt;span style="font-style:italic;"&gt;Alt-DEL&lt;/span&gt; will stop at punctuation and other non-word characters. &lt;span style="font-style:italic;"&gt;Ctrl-w&lt;/span&gt; does not.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Ctrl-y&lt;/span&gt;  Yank (paste) the most recently killed text into place at the current cursor &lt;br /&gt;&lt;hr style="width: 50%;height:2px;color:navy;" /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Ctrl-l&lt;/span&gt;  Clear the screen, putting the current line at the top&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-6112310942323879788?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/6112310942323879788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=6112310942323879788' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/6112310942323879788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/6112310942323879788'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2008/11/bash-readline-commands.html' title='Bash Readline Commands'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-4687188990855089184</id><published>2008-10-19T09:06:00.000-07:00</published><updated>2010-08-24T11:42:48.983-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='cli'/><category scheme='http://www.blogger.com/atom/ns#' term='command line'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><category scheme='http://www.blogger.com/atom/ns#' term='wireless'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>Wireless connection from the command line</title><content type='html'>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:&lt;br /&gt;&lt;br /&gt;There is a wireless networking utility very much like &lt;span style="font-style:italic;"&gt;ifconfig&lt;/span&gt; called &lt;span style="font-style:italic;"&gt;iwconfig&lt;/span&gt;. 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.&lt;br /&gt;&lt;br /&gt;To find out what wireless networks are available to you, type&lt;br /&gt;&lt;strike&gt;&lt;code&gt;iwconfig wlan0 scan&lt;/code&gt;&lt;/strike&gt; (see comments)&lt;br /&gt;&lt;code&gt;iwlist wlan0 scan&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;To attach to an open, non-encrypted network, type&lt;br /&gt;&lt;code&gt;iwconfig wlan0 essid netname&lt;/code&gt;&lt;br /&gt;where netname is the essid of the network you want to connect to.&lt;br /&gt;&lt;br /&gt;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:&lt;br /&gt;&lt;code&gt;iwconfig wlan0 key s:password&lt;br /&gt;iwconfig wlan0 essid netname&lt;/code&gt;&lt;br /&gt;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:&lt;br /&gt;&lt;code&gt;iwconfig wlan0 key 0123-4567-89&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Good luck getting your GUI fixed!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-4687188990855089184?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/4687188990855089184/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=4687188990855089184' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/4687188990855089184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/4687188990855089184'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2008/10/wireless-connection-from-command-line.html' title='Wireless connection from the command line'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-100746846609590663</id><published>2008-10-12T03:48:00.000-07:00</published><updated>2008-10-12T07:41:52.568-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='packages'/><category scheme='http://www.blogger.com/atom/ns#' term='alien'/><category scheme='http://www.blogger.com/atom/ns#' term='MIDs'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Midinux'/><title type='text'>Stealing from Ubuntu to pay Midinux</title><content type='html'>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).&lt;br /&gt;&lt;br /&gt;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 &lt;br /&gt;&lt;br /&gt;Once you have the packages that you need, go ahead and change the debs into rpms using &lt;a href="http://kitenet.net/~joey/code/alien/"&gt;Alien&lt;/a&gt;. The command looks like this:&lt;br /&gt;&lt;code&gt;&gt; alien --to-rpm the-package.whatever.deb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;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:&lt;br /&gt;&lt;code&gt;&gt; rpm --install the-package-whatever.rpm&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;And there you go!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-100746846609590663?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/100746846609590663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=100746846609590663' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/100746846609590663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/100746846609590663'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2008/10/stealing-from-ubuntu-to-pay-midinux.html' title='Stealing from Ubuntu to pay Midinux'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-6417291497216764780</id><published>2008-10-07T10:57:00.000-07:00</published><updated>2008-10-07T11:04:05.205-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='developing'/><category scheme='http://www.blogger.com/atom/ns#' term='maemo'/><title type='text'>Ahhhh... This place has PACKAGES</title><content type='html'>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!&lt;br /&gt;&lt;br /&gt;So, the good news is that &lt;a href="http://www.arachnoid.com/linux/nokia/"&gt;Hacking the N810&lt;/a&gt; pointed me in the direction of &lt;a href="http://gronmayer.com/it"&gt;http://gronmayer.com/it&lt;/a&gt; which is now officially my second savior of the day (right after &lt;a href="http://www.gnuton.org/blog/2008/05/chinook-401-sdk-environment-funky-installation/"&gt;Gnuton&lt;/a&gt;). &lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-6417291497216764780?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/6417291497216764780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=6417291497216764780' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/6417291497216764780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/6417291497216764780'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2008/10/ahhhh-this-place-has-packages.html' title='Ahhhh... This place has PACKAGES'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-8085615603876690957</id><published>2008-10-07T06:05:00.000-07:00</published><updated>2008-10-07T06:23:17.215-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sandbox'/><category scheme='http://www.blogger.com/atom/ns#' term='MIDs'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='developing'/><category scheme='http://www.blogger.com/atom/ns#' term='maemo'/><title type='text'>Maemo Scratchbox Hell</title><content type='html'>That was SO much harder than yesterday. So, maybe it wasn't the same problem. &lt;br /&gt;&lt;br /&gt;When trying to install the maemo-sdk-runtime in the ARMEL target of my scratchbox, I kept getting this HUGE error that started&lt;br /&gt;&lt;blockquote&gt;[sbox-DIABLO_ARMEL: ~] &gt; fakeroot apt-get install maemo-sdk-runtime&lt;br /&gt;Reading package lists... Done&lt;br /&gt;Building dependency tree... Done&lt;br /&gt;The following NEW packages will be installed:&lt;br /&gt;  maemo-sdk-runtime&lt;br /&gt;0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.&lt;br /&gt;27 not fully installed or removed.&lt;br /&gt;Need to get 0B/1890B of archives.&lt;br /&gt;After unpacking 32.8kB of additional disk space will be used.&lt;br /&gt;WARNING: The following packages cannot be authenticated!&lt;br /&gt;  maemo-sdk-runtime&lt;br /&gt;Install these packages without verification [y/N]? y&lt;br /&gt;/scratchbox/tools/bin/sh: line 1: /usr/sbin/dpkg-preconfigure: No such file or directory&lt;br /&gt;Selecting previously deselected package maemo-sdk-runtime.&lt;br /&gt;(Reading database ... 16920 files and directories currently installed.)&lt;br /&gt;Unpacking maemo-sdk-runtime (from .../maemo-sdk-runtime_1.0_all.deb) ...&lt;br /&gt;Setting up gconf2 (2.16.0-1osso14) ...&lt;br /&gt;/scratchbox/tools/bin/chown: `messagebus:messagebus': invalid user&lt;br /&gt;dpkg: error processing gconf2 (--configure):&lt;br /&gt; subprocess post-installation script returned error exit status 1&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;and ended &lt;br /&gt;&lt;blockquote&gt;E: Sub-process /scratchbox/devkits/debian-etch/bin/dpkg returned an error code (1)&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I'll now list ALL the things that it took to get this working...&lt;br /&gt;&lt;br /&gt;Let us start with  /etc/sysctl.conf&lt;br /&gt;add the lines &lt;br /&gt;&lt;blockquote&gt;vm.mmap_min_addr = 4096&lt;br /&gt;net.ipv4.ip_local_port_range = 1024 65535&lt;br /&gt;vm.vdso_enabled = 0&lt;/blockquote&gt;&lt;br /&gt;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.)&lt;br /&gt;&lt;br /&gt;Next, I ran apt-get install -f in both my &lt;i&gt;normal&lt;/i&gt; shell and in the scratchbox. I used apt-get autoremove to get rid of some no-longer-needed packages in my regular shell.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.gnuton.org/blog/2008/05/chinook-401-sdk-environment-funky-installation/" target="_new"&gt;Gnuton reported several problems and fixes&lt;/a&gt; and although I didn't have his &lt;span style="font-style:italic;"&gt;'messagebus:messagebus': invalid user&lt;/span&gt; problem I still did&lt;br /&gt;&lt;blockquote&gt;cd /var/cache/apt/archives&lt;br /&gt;fakeroot dpkg -i *dbus*&lt;/blockquote&gt;&lt;br /&gt;in the scratchbox, just in case.&lt;br /&gt;&lt;br /&gt;Finally, I followed his advice and did&lt;br /&gt;&lt;blockquote&gt;cp /usr/sbin/dpkg-preconfigure /scratchbox/users/lisha/targets/DIABLO_ARMEL/usr/sbin&lt;/blockquote&gt;&lt;br /&gt;and finally the &amp;$%#! &lt;span style="font-style:italic;"&gt;fakeroot apt-get install maemo-sdk-runtime&lt;/span&gt; worked.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-8085615603876690957?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/8085615603876690957/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=8085615603876690957' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/8085615603876690957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/8085615603876690957'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2008/10/maemo-scratchbox-hell.html' title='Maemo Scratchbox Hell'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-8606210322905480487</id><published>2008-10-07T04:05:00.000-07:00</published><updated>2008-10-07T05:04:40.039-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MIDs'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='developing'/><title type='text'>Sometimes I just don't learn</title><content type='html'>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. &lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-8606210322905480487?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/8606210322905480487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=8606210322905480487' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/8606210322905480487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/8606210322905480487'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2008/10/sometimes-i-just-dont-learn.html' title='Sometimes I just don&apos;t learn'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-5788695332555300140</id><published>2008-10-02T04:40:00.000-07:00</published><updated>2009-06-26T20:59:17.190-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wishlist'/><category scheme='http://www.blogger.com/atom/ns#' term='MIDs'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='crictor'/><category scheme='http://www.blogger.com/atom/ns#' term='phones'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Thoughts on MID's</title><content type='html'>MID stands for Mobile Internet Device. &lt;br /&gt;&lt;br /&gt;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 &lt;a href="http://blog.wired.com/gadgets/2008/09/revealed-htct-m.html" target="_new"&gt;HTC Android phone&lt;/a&gt; does count. My broad description, including phones, is not necessarily canonical. I do think that it's logical, however.&lt;br /&gt;&lt;br /&gt;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 &lt;a href="http://www.moblin.org" target="_new"&gt;Moblin.org&lt;/a&gt;. So, knowing that, what's really important in an MID?&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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 &lt;a href="http://www.homestarrunner.com/sbemail39.html" target="_new"&gt;cold one&lt;/a&gt;? &lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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 &lt;i&gt;could&lt;/i&gt; 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.&lt;br /&gt;&lt;br /&gt;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. &lt;br /&gt;&lt;br /&gt;So far, the best all around experience I've had has been with the Nokia N810 running the new &lt;a href="http://maemo.org/development/sdks/maemo_4-1-1_diablo_sdk/" target="_new"&gt;maemo version, 4.1.1 Diablo&lt;/a&gt;. 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.&lt;br /&gt;&lt;br /&gt;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 &lt;a href="http://www.informationweek.com/news/mobility/showArticle.jhtml?articleID=206504325" target="_new"&gt;you really shouldn't be talking with the phone up to your face anyway&lt;/a&gt;! 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. &lt;br /&gt;&lt;br /&gt;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 &lt;strike&gt;adopt&lt;/strike&gt; buy one.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:9x"&gt;*Am I the only one on the planet who misses the Palm &lt;a href="http://en.wikipedia.org/wiki/Graffiti_(Palm_OS)" target="_new"&gt;Graffiti&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;**I think I'm killing my eyes reading RSS feeds on my way to work on the tiny N80 screen. &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-5788695332555300140?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/5788695332555300140/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=5788695332555300140' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/5788695332555300140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/5788695332555300140'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2008/10/thoughts-on-mids.html' title='Thoughts on MID&apos;s'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-6525791115620419175</id><published>2008-08-27T01:27:00.000-07:00</published><updated>2008-08-27T01:46:46.324-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='usability'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='user interface'/><category scheme='http://www.blogger.com/atom/ns#' term='ubiquity'/><category scheme='http://www.blogger.com/atom/ns#' term='mozilla'/><title type='text'>Mozilla is Ubiquitous</title><content type='html'>If you are subscribe to my Google Reader share, are one of my Twitter friends, or are connected to me on FriendFeed, then you might be sick of this topic already, since I've been kinda blabbing and sharing and tweeting ever since I found out about this when I came into work this morning, but... DUDE! Ubiquity is AWESOME!!!!&lt;br /&gt;&lt;br /&gt;In case you, like me, have never heard of the &lt;a href = "https://wiki.mozilla.org/Labs/Ubiquity/Ubiquity_0.1_User_Tutorial" target="_new"&gt;Ubiquity&lt;/a&gt; project from &lt;a href="http://labs.mozilla.com/" target="_new"&gt;Mozilla Labs&lt;/a&gt; before, let me enlighten you with this here little video:&lt;br /&gt;&lt;br /&gt;&lt;object width="400" height="298"&gt; &lt;param name="allowfullscreen" value="true" /&gt; &lt;param name="allowscriptaccess" value="always" /&gt; &lt;param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=1561578&amp;amp;server=www.vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" /&gt; &lt;embed src="http://www.vimeo.com/moogaloop.swf?clip_id=1561578&amp;amp;server=www.vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="298"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href="http://www.vimeo.com/1561578?pg=embed&amp;amp;sec=1561578"&gt;Ubiquity for Firefox&lt;/a&gt; from &lt;a href="http://www.vimeo.com/user532161?pg=embed&amp;amp;sec=1561578"&gt;Aza Raskin&lt;/a&gt; on &lt;a href="http://vimeo.com?pg=embed&amp;amp;sec=1561578"&gt;Vimeo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The reason that this tool is so cool is that it brings together the speed of command line work with the user friendliness of the graphical interface. With a few key strokes you can do the work of tons of mouse moves and clicks. What's more, the key strokes are completely intuitive. There's no memorizing a huge list of things just to make it work. I don't have to memorize the word "Twitter", I use it all the time, and if I start typing "Twitter" in the Ubiquity command box it guesses at what I'm trying to tell it before I'm even done. So, two letters in, I'm done with the "Twitter" part of the command and I can start telling it what I want it to tweet.&lt;br /&gt;&lt;br /&gt;The interface for Weather is another great example of how easy to use this interface is. I called up the Ubiquity command box and started to type "we" and it knew I wanted weather. Then I typed Oakland (where the bestest daughter in the whole wide world is right now), and it immediately gave me the weather for Oakland, California. I decided to see about Oakland, New Jersey, though, just for a twist. *Poof* the weather info changed as I added in the state. Very nice.&lt;br /&gt;&lt;br /&gt;There are lots of commonly used tools built into the application already. On the downside, non-programmers find themselves stuck with the options that someone else picked when they wrote the command. On the upside, however, with just a little bit of work you can learn how to edit existing commands or write your own, so you can make commands go to the sites that YOU want.&lt;br /&gt;&lt;br /&gt;The first thing I plan to do with this? Create a command for mapping here in Israel using http://mapa.co.il, since Google Maps are less than useless in Israel. (Apparently, in Israel we have no streets.) I shall post code and a general review of the coding experience here when I'm done. &lt;br /&gt;&lt;br /&gt;Oh, oh, oh, you know what else would be nice? A command to blog things just like you can email things in Ubiquity. Yeah, that would be awesome. Who wants to write that one?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-6525791115620419175?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/6525791115620419175/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=6525791115620419175' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/6525791115620419175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/6525791115620419175'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2008/08/mozilla-is-ubiquitous.html' title='Mozilla is Ubiquitous'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-5189511276496830019</id><published>2008-07-22T05:55:00.000-07:00</published><updated>2008-07-22T05:58:42.724-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><title type='text'>mySQL query solution</title><content type='html'>I had been trying very hard to avoid having to do a nested query, but in the end, I really couldn't figure out a way around it. This is the query that gets the job done:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;mysql&gt; select tnid from fr_strings where sid NOT IN (SELECT sid from fr_tr_by_uid where uid = 1 and language = 'es');&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you have a non-nested solution for this problem, I'd still love to see it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-5189511276496830019?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/5189511276496830019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=5189511276496830019' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/5189511276496830019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/5189511276496830019'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2008/07/mysql-query-solution.html' title='mySQL query solution'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-7733049939320842007</id><published>2008-07-21T10:26:00.001-07:00</published><updated>2008-07-22T02:41:30.937-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><title type='text'>mySQL query trouble</title><content type='html'>I'm having a hellish time with a sql statement. I need to get nodes ("tnid" here) where a given user (uid = 1) has not translated a given language (language = "he", or rather, != as you'll see)&lt;br /&gt;&lt;br /&gt;fr_strings has sid and tnid  (those are the only ones important to us now, anyway)&lt;br /&gt;fr_tr_by_uid has sid, uid and language&lt;br /&gt;&lt;br /&gt;When someone translates a string, it pops in their user id, the string id and the language that they translated the string to. So, say, if I am translating into es or he (spanish or hebrew) I should no longer see the string pop up for translation in es if I've already done that translation, but the request for the string translation would still pop up when I'm working on the he translation. Get it? OK. &lt;br /&gt;&lt;br /&gt;So, I want to select the tnid's where uid != 1 and language != 'he'. Something like that. Let's look at some queries and responses:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;mysql&gt; select distinct * from fr_strings as st natural left join fr_tr_by_uid as ui where sid &gt; 279;&lt;br /&gt;+-----+------+------+----------+&lt;br /&gt;| sid | tnid | uid  | language |&lt;br /&gt;+-----+------+------+----------+&lt;br /&gt;| 280 |  870 |     2 | es      | &lt;br /&gt;| 280 |  870 |     1 | es      | &lt;br /&gt;| 281 |  871 |     1 | es      |&lt;br /&gt;| 283 |  873 |  NULL | NULL    |&lt;br /&gt;+-----+------+------+----------+&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;What I want out of this bunch here is tnid 283. That's all. That's the ONLY one I want. But if I try this:&lt;br /&gt;  &lt;br /&gt;&lt;code&gt;&lt;br /&gt;mysql&gt; select distinct tnid from fr_strings as st natural left join fr_tr_by_uid as ui where sid &gt; 279 AND uid != 1;&lt;br /&gt;+------+&lt;br /&gt;| tnid |&lt;br /&gt;+------+&lt;br /&gt;|  870 | &lt;br /&gt;+------+&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;That's clearly not what I wanted. &lt;br /&gt;&lt;br /&gt;How about This:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;mysql&gt; select distinct tnid from fr_strings as st natural left join fr_tr_by_uid as ui where sid &gt; 279 AND uid != 1 OR uid is null;&lt;br /&gt;+------+&lt;br /&gt;| tnid |&lt;br /&gt;+------+&lt;br /&gt;|  870 | &lt;br /&gt;|  873 | &lt;br /&gt;+------+&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Still not there. As you can see, since the tnid shows up once in the table under a different uid, I still get that tnid back, even though &lt;b&gt;one&lt;/b&gt; record with that tnid does have the uid=1.&lt;br /&gt;&lt;br /&gt;I'm sure that this is something really stupid. (I'm always sure when I can't figure something out that the solution is something really stupid.) But, I can't shake the answer out of my head. Any of you know what I'm doing wrong?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;*edit*&lt;/b&gt; I got a message suggesting that I ought to just do uid is null and ignore the uid != 1 part. But here is why that doesn't work for me...&lt;br /&gt;&lt;br /&gt;Let's say that I want user 2 to get all the strings that she hasn't translated into Spanish yet.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;mysql&gt; select distinct tnid from fr_strings as st natural left join fr_tr_by_uid as ui where sid &gt; 279 AND (uid is null OR language != "es");&lt;br /&gt;+------+&lt;br /&gt;| tnid |&lt;br /&gt;+------+&lt;br /&gt;|  872 | &lt;br /&gt;|  873 | &lt;br /&gt;+------+&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This doesn't work. You see, uid 2 DID translate 870 into Spanish, but not 871 (see the first results table).  I need her to get 871 for translation still, but this query won't give it to her. I'm still stuck.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-7733049939320842007?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/7733049939320842007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=7733049939320842007' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/7733049939320842007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/7733049939320842007'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2008/07/mysql-query-trouble.html' title='mySQL query trouble'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-8875341300853962685</id><published>2008-07-02T00:29:00.000-07:00</published><updated>2008-07-02T00:48:21.075-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hosts'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><category scheme='http://www.blogger.com/atom/ns#' term='developing'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>Finding a host I couldn't see</title><content type='html'>Last week I finally broke down and asked IT if they would mind if I switched over to a Linux desktop for my daily development work. Functioning in Windows was driving me absolutely bonkers. He wasn't so sure about it at first. He suggested that I run Windows and then have Linux running in virtualization. That just seemed like a waste of resources to me, though. So, I suggested that I set the computer up for dual boot, and if things went badly I could always go back to Windows.&lt;br /&gt;&lt;br /&gt;The IT guy's concern was that, while I might be able to do my programming in Linux, I might not have access to all the company shares, the exchange server for mail, and all that other Windows-based stuff sitting on the company network. And he was right to be concerned. In the past, all those things have been a major pain in the backside to fix.&lt;br /&gt;&lt;br /&gt;The good news is that Samba, the tool that lets you hook up Linux or Unix machines to a Windows network, has come a very long way, and the whole thing turned out to be pathetically easy. Not only that, but Evolution for mail kicks the proverbial butt, and I was able to get mail, tasks, contacts, and calendar from exchange working perfectly with the Exchange server with just a few button clicks and no sweat at all.&lt;br /&gt;&lt;br /&gt;But, then I need to look something up on the company wiki, and that's when I hit trouble. Firefox turned my http://companywiki/ url into http://www.companywiki.com. Woops! I tried a couple of times before it sunk in to my thick skull that the problem was that my computer wasn't recognizing the internal domain names. Clearly I need another Domain Name Server in my list, but the problem is that I don't want to go back to that IT guy just now. He may just tell me it's all Linux's fault, and that I have to switch back. I don't want that. So, I have a work around.&lt;br /&gt;&lt;br /&gt;I checked in Windows what the ip address for companywiki is supposed to be, and then, back in Linux, I edited my hosts file to point the name companywiki to that address. Poof! I have normal access to the wiki using the domain name now. Easy peasy.&lt;br /&gt;&lt;br /&gt;There are other uses for the hosts file, too. For instance, if I have server settings in a Web application that I'm working on, I can tell my hosts file that those server names are really my computer. My computer will look where the hosts file tells it to look before asking the Domain Name Server for information, so I can test the application without having to change those server name variables in the code.&lt;br /&gt;&lt;br /&gt;Linux is not the only system with a hosts file that can let you find servers by a certain name, either. You can find a list of where to find the hosts file on different operating systems at &lt;a href="http://en.wikipedia.org/wiki/Hosts_file#Location_and_default_content" target="_new"&gt;Wikipedia&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-8875341300853962685?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/8875341300853962685/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=8875341300853962685' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/8875341300853962685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/8875341300853962685'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2008/07/finding-host-i-couldnt-see.html' title='Finding a host I couldn&apos;t see'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-6877666374571784729</id><published>2008-06-20T14:34:00.000-07:00</published><updated>2008-06-20T14:42:55.755-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silliness'/><category scheme='http://www.blogger.com/atom/ns#' term='Fring'/><title type='text'>A bit of fring development trivia</title><content type='html'>So, if you are a developer of things webbish or things mobile phone-ish, you may already know that the company I work for, &lt;a href="http://www.fring.com" target="_new"&gt;fring&lt;/a&gt; released an &lt;a href="http://developers.fring.com" target="_new"&gt;API&lt;/a&gt; for creating various applications and mashups inside our software platform. The name of our special XML-based language is FAXL, pronounced "Fah-zel". The server that runs the fring applications is called the FIS. One of the FIS servers we used for development was named "inigomontoya". &lt;br /&gt;&lt;br /&gt;In the last few days leading up to launch, there was a bastardized quote that rang through the air at seemingly random times, "My name is Inigo Montoya. You killed my FAXL. Prepare to die!"&lt;br /&gt;&lt;br /&gt;Yeah, software development deadlines are not conducive to mental stability. Need I say more?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-6877666374571784729?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/6877666374571784729/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=6877666374571784729' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/6877666374571784729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/6877666374571784729'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2008/06/bit-of-fring-development-trivia.html' title='A bit of fring development trivia'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-8125070644483481684</id><published>2008-05-25T03:09:00.000-07:00</published><updated>2008-05-25T03:23:37.144-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><category scheme='http://www.blogger.com/atom/ns#' term='debugging'/><category scheme='http://www.blogger.com/atom/ns#' term='regular expressions'/><title type='text'>PHP and AJAX *head desk*</title><content type='html'>So, Thursday afternoon I broke my brain for the weekend trying to figure out why the heck a script that is working perfectly well on one server isn't working right on another server. Day one was wasted trying to figure out HOW to figure out what the heck was going on. The logs told me nothing. The page itself was not giving any hints. Since the whole thing was happening in AJAX land, behind the scenes and without giving any useful output to the browser, I couldn't use debugging tricks like echo and print_r to figure out what was going on with my variables. This morning, however, my brain was in better gear than it was Thursday afternoon, so I started the day off by actually doing something useful.&lt;br /&gt;&lt;br /&gt;When you need a script to give you useful information in the browser, and the page in question is using AJAX to send information (but not, at the moment, receive information), then (DUH!) use AJAX to give you the information you need!!! &lt;br /&gt;&lt;br /&gt;In my case I had a handy editor box in which to plunk the response text from the AJAX request.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;    xmlhttp.onreadystatechange = function(){&lt;br /&gt;  if (xmlhttp.readyState == 4) {&lt;br /&gt;  &lt;br /&gt;  document.forms["editorbox"].editorBox.value = xmlhttp.responseText;&lt;br /&gt;    }&lt;br /&gt; }&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;At one point, I used &lt;code&gt;alert(xmlhttp.responseText)&lt;/code&gt; instead of the editorbox, but that wasn't as useful because the alert box doesn't let you select and copy stuff if you need it. Also, my editorbox had a handy-dandy scroll bar, and the errors coming out of my responseText were numerous.&lt;br /&gt;&lt;br /&gt;In order to make the responseText useful, you may want to echo out certain variables and then &lt;code&gt;exit;&lt;/code&gt; so that the info you want -- and only the info you want -- will show up where you need it.&lt;br /&gt;&lt;br /&gt;Now, as to what was actually wrong with the script I was messing with today... It appears that a difference in php.ini files was my problem. In the version of the script that was NOT working, all the quotes were getting escaped as they got soaked up into the PHP script. When I then tried to &lt;code&gt;dom-&gt;loadXML($myXML)&lt;/code&gt; the script was complaining that my XML was no good. Well, of course it's no good, there's all these darned escape characters before the quotes!&lt;br /&gt;&lt;br /&gt;I don't want to change the php.ini on the server, so I have to get rid of those escapes some other way. &lt;code&gt;preg_replace&lt;/code&gt; to the rescue!&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$pat = '/\\\"/';&lt;br /&gt;$rep = "'";&lt;br /&gt;$myXML = preg_replace($pat, $rep, $myXML);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;All better. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-8125070644483481684?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/8125070644483481684/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=8125070644483481684' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/8125070644483481684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/8125070644483481684'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2008/05/php-and-ajax-head-desk.html' title='PHP and AJAX *head desk*'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-4744227670564108836</id><published>2008-05-13T00:37:00.000-07:00</published><updated>2008-05-13T00:54:26.343-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='usability'/><title type='text'>Good User Interfaces</title><content type='html'>I have a friend who loves to complain about the user interfaces in current technology. He has a million great things to say about how things should be made, and he says them with a cantankerous grumble. I adore him for so many reasons, but this is definitely one of them. He opens my eyes again and again to my own tendency to develop for geeks like me instead of the person on the street who really should be getting a better thought out and better built product. Because of him, I also notice even more when someone does something really right. &lt;br /&gt;&lt;br /&gt;A couple of weeks ago he and I were in an elevator and he hit the wrong button by accident. He grumbled and hit the correct button and then said, "You know, if elevators were made correctly, I'd be able to cancel that wrong choice. I should be able to hit that button again and make it turn off." &lt;br /&gt;&lt;br /&gt;Today, when I got into the elevator at work, someone else got in, pressed the wrong button, noticed the mistake and pressed the button again to cancel the request. Then they pressed the floor they really wanted. Oo! I was so excited I had to twitter it right there in the elevator. &lt;br /&gt;&lt;br /&gt;It turns out that all new Mitsubishi elevators have that functionality. Way to go Mitsubishi.&lt;br /&gt;&lt;br /&gt;Another one of my friend's pet peeves is that you have to save files. Why should you have to do an action to save a file? It should be automatic, right? Why would I create a file if I didn't want to save it? Well, it's getting to be automatic in some places like &lt;a href="http://docs.google.com" target="_new"&gt;Google Docs&lt;/a&gt; for instance. Well, today I found another really cool app that deals with the saving thing right along with at least a dozen other major UI annoyances. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://plasq.com/skitch" target="_new"&gt;Skitch&lt;/a&gt; is unfortunately a Mac only application and it's still in beta, but it looks absolutely awesome. They get so many things right. They have a great way to share things, to snap screenshots, to draw and manipulate images, and you don't have to save your file from a menu or a keystroke. You can just drag it to where you want it to live, or drag it to an email to share it. Very, very nice.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-4744227670564108836?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/4744227670564108836/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=4744227670564108836' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/4744227670564108836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/4744227670564108836'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2008/05/good-user-interfaces.html' title='Good User Interfaces'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-1818547472796522001</id><published>2008-05-12T02:28:00.000-07:00</published><updated>2008-05-12T02:49:17.701-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='drupal'/><title type='text'>Having Trouble Importing Drupal Translation Packs?</title><content type='html'>OMG I just spent way too long pulling my hair out over the Drupal 6 translation import feature. To put it simply, the handbook and help information is very UNCLEAR about what you are supposed to do. &lt;br /&gt;&lt;br /&gt;The instructions say to download the translation pack into your install directory and unzip it. So, if, like me, you don't have access to the server that will allow you to unzip a folder &lt;b&gt;on&lt;/b&gt; the server, logic says that you should be able to unzip the folder on your own machine and simply ftp the folder into place, right? Wrong. Well, at least sort of wrong.&lt;br /&gt;&lt;br /&gt;Let's say you have the he-6.x-1.0 translation pack. You've unzipped it, and now it's sitting on your PC's desktop. You want to move it to your server. DO NOT copy that whole folder over to the server so that you end up with something like &lt;code&gt;/webroot/drupal/he-6.x-10&lt;/code&gt; on your server.&lt;br /&gt;&lt;br /&gt;What you DO want to do is copy the CONTENTS of he-6.x-10 over onto the server so that the internal directory structures plop into place inside the existing directory structure in drupal. That way you will have something like &lt;code&gt;/webroot/drupal/modules/aggregator/translations/modules-aggregator.he.po&lt;/code&gt; and so forth.&lt;br /&gt;&lt;br /&gt;As you can see here, each directory that has translations (modules, themes, etc. anything that has t() strings, really) gets it own translations directory and language po files go in there. &lt;br /&gt;&lt;br /&gt;The easiest way to get all of those files to plonk into the right place is, in fact, to un-zip the file &lt;i&gt;insitu&lt;/i&gt; at your server rather than trying to ftp the files over post-expansion.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-1818547472796522001?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/1818547472796522001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=1818547472796522001' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/1818547472796522001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/1818547472796522001'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2008/05/having-trouble-importing-drupal.html' title='Having Trouble Importing Drupal Translation Packs?'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-7704029633003846694</id><published>2008-05-01T02:22:00.000-07:00</published><updated>2008-05-01T02:46:05.806-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>Interesting tidbit about PHP objects</title><content type='html'>I'm doing some XML stuff right now, using &lt;a href="http://www.php.net/manual/en/book.simplexml.php" target="_new"&gt;SimpleXML in PHP&lt;/a&gt;. One of the element groups I need to create is a list of descriptions in different languages. My original attempt looked like this:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;  $descriptions = array(&lt;br /&gt;   'en' =&gt; 'An awsome app.',&lt;br /&gt; 'es' =&gt; 'Una aplicacion chevere.',&lt;br /&gt; 'he' =&gt; 'אפליקציה מעולה',&lt;br /&gt;  );&lt;br /&gt;&lt;br /&gt;  foreach($descriptions as $loc =&gt; $desc) {&lt;br /&gt; $d-&gt;addChild('description', $desc);&lt;br /&gt; $d-&gt;description-&gt;addAttribute('locale', $loc);&lt;br /&gt;  }&lt;br /&gt;  echo $xml_post-&gt;asXML();&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;But that gave me an error: &lt;br /&gt;&lt;pre&gt;Warning: SimpleXMLElement::addAttribute() [function.SimpleXMLElement-addAttribute]: Attribute already exists in...&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;When I looked at the code, the attribute was only getting plunked into the first &amp;lt;description&amp;gt; tag. The PHP engine thought that each time I went through the loop I was talking about the same $d-&gt;description when I asked it to stick a locale attribute in there. Weird. I expected the object to be treated like any other variable and get treated as a fresh thing. Nope.&lt;br /&gt;&lt;br /&gt;If you put&lt;br /&gt;&lt;code&gt;&lt;br /&gt;echo $d-&gt;description . "&amp;lt;br /&amp;gt;"&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;after the addChild() above, you'll see that it echoes out &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;an awesome app.&lt;br /&gt;an awesome app.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;If, however you change that block of code to &lt;br /&gt;&lt;code&gt;&lt;br /&gt; foreach($descriptions as $loc =&gt; $desc) {&lt;br /&gt; $tag = $d-&gt;addChild('description', $desc);&lt;br /&gt;        echo $tag . "&amp;lt;br /&amp;gt;";&lt;br /&gt;  }&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;you'll see that $tag prints out the correct description line for that pass through the loop:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;An awsome app.&lt;br /&gt;Una aplicacion chevere.&lt;br /&gt;אפליקציה מעולה&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;So, the correct code to create the XML I want is&lt;br /&gt;&lt;code&gt;&lt;br /&gt;  $descriptions = array(&lt;br /&gt;   'en' =&gt; 'An awsome app.',&lt;br /&gt; 'es' =&gt; 'Una aplicacion chevere.',&lt;br /&gt; 'he' =&gt; 'אפליקציה מעולה',&lt;br /&gt;  );&lt;br /&gt;  foreach($descriptions as $loc =&gt; $desc) {&lt;br /&gt; $tag = $d-&gt;addChild('description', $desc);&lt;br /&gt; $tag-&gt;addAttribute('locale', $loc);&lt;br /&gt;  }&lt;br /&gt;  echo $xml_post-&gt;asXML();&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;And then the XML comes out right.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;description locale="en"&amp;gt;An awsome app.&amp;lt;/description&amp;gt;&lt;br /&gt;&amp;lt;description locale="es"&amp;gt;Una aplicacion chevere.&amp;lt;/description&amp;gt;&lt;br /&gt;&amp;lt;description locale="he"&amp;gt;&amp;#x5D0;&amp;#x5E4;&amp;#x5DC;&amp;#x5D9;&amp;#x5E7;&amp;#x5E6;&amp;#x5D9;&amp;#x5D4;&amp;#x5DE;&amp;#x5E2;&amp;#x5D5;&amp;#x5DC;&amp;#x5D4;&amp;lt;/description&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-7704029633003846694?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/7704029633003846694/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=7704029633003846694' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/7704029633003846694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/7704029633003846694'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2008/05/interesting-tidbit-about-php-objects.html' title='Interesting tidbit about PHP objects'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-2571093637747159978</id><published>2008-04-30T03:56:00.000-07:00</published><updated>2008-04-30T04:03:44.175-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>CodeBlocks: Cross Platform C++ IDE</title><content type='html'>This is late, but you know what they say... better than never, right?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.codeblocks.org/" target="_new"&gt;CodeBlocks&lt;/a&gt; has finally released a new version. For ages they weren't doing releases, just nightly builds. When I was working with Shlomi Peleg at SparkThing this app was a staple of our work environment. I haven't used the new release yet, but Peleg says that it's great. &lt;br /&gt;&lt;br /&gt;So, if you write C++ and want an excellent open source IDE to work in, check it out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-2571093637747159978?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/2571093637747159978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=2571093637747159978' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/2571093637747159978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/2571093637747159978'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2008/04/codeblocks-cross-platform-c-ide.html' title='CodeBlocks: Cross Platform C++ IDE'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-732377029650894501</id><published>2008-04-28T05:29:00.000-07:00</published><updated>2008-04-28T05:42:08.370-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='phones'/><title type='text'>Cool iPhone Thingy</title><content type='html'>We had a training at work today all about how the GSM phone system works. At the end, the speaker showed us how to find out all sorts of information about your GSM connection on an iPhone. You can see information about a call in progress, network information, which cell phone towers your phone can see, information about your GPRS (internet) connection, and what firmware version you are running. &lt;br /&gt;&lt;br /&gt;One of the cool things about this is that you can see how walking around in a room, say, makes your connection to any given tower stronger or weaker. &lt;br /&gt;&lt;br /&gt;If you have an iPhone, check it out. Dial *3001#12345#* then hit call.&lt;br /&gt;&lt;br /&gt;And no, I don't have an iPhone. The company has a few for testing our apps, so we got to play with those. My current phone is a Nokia N80.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-732377029650894501?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/732377029650894501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=732377029650894501' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/732377029650894501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/732377029650894501'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2008/04/cool-iphone-thingy.html' title='Cool iPhone Thingy'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-6939948645191447040</id><published>2008-04-13T03:26:00.000-07:00</published><updated>2008-04-13T03:45:21.500-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='data'/><category scheme='http://www.blogger.com/atom/ns#' term='usability'/><category scheme='http://www.blogger.com/atom/ns#' term='Fring'/><category scheme='http://www.blogger.com/atom/ns#' term='phones'/><title type='text'>Computing Everywhere?</title><content type='html'>A friend of mine hates the state of computing today. He points out that it's developed by geeks for geeks, and the rest of the world has to bend to our twisted way of thinking. Really, computers should be more than just ubiquitous, they should be invisible. They should bend to the needs of humans, not the other way around. &lt;br /&gt;&lt;br /&gt;One of the areas where this is actually making strides forward is in the area of always accessible data. As my friend would say, "Why should I have to manage three or four address books? I shouldn't! The computer, my home phone, my cell phone, and all of the apps on them should be able to get what I need from one central place where I keep that data." So true.&lt;br /&gt;&lt;br /&gt;APIs for cross-application development and mashups are getting us closer to that kind of thing, and tools like &lt;a href="http://openid.net/" target="_new"&gt;OpenID&lt;/a&gt; and &lt;a href="http://oauth.net/" target="_new"&gt;OAuth&lt;/a&gt; are also moving us in the right direction. But, what about that data thing? How can I have my data in one place?&lt;br /&gt;&lt;br /&gt;One possibility is the advent of serious online storage solutions and wifi based file sharing through applications like *&lt;a href="http://www.fring.com" target="_new"&gt;Fring&lt;/a&gt;. There's a &lt;a href="http://www.fring.com/blog/?p=198" target="_new"&gt;blog article&lt;/a&gt; about just that at the Fring site called "Is Fring the missing link for mobile online storage services?". Yeah, I think that it can be. &lt;br /&gt;&lt;br /&gt;We're still a long way from where my friend dreams, but I truly believe that we are in the midst of an evolution that is heading in that direction. One side of me says that we shouldn't be too impatient because all of these things are moving forward one step at a time, but on the other hand, it's precisely the impatience of developers and entrepreneurs that is pushing us forward in this evolution so quickly. &lt;br /&gt;&lt;br /&gt;The next time you look at the design of an application you are working on, ask yourself: "How is this going to tie in with the computing needs of the user at home, on their smart phone, in the car... and everywhere else they are computing?" And "Can we make it work together with a single data source and invisible syncing?" Because if you can deal with those two issues now, you are going to put your app ahead of the curve and make it that much more invaluable to your end user.   Which might just be yourself. (or me!) ;)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:9px;"&gt;*Just so you know: I work for Fring now. :) &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-6939948645191447040?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/6939948645191447040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=6939948645191447040' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/6939948645191447040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/6939948645191447040'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2008/04/computing-everywhere.html' title='Computing Everywhere?'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-7002973164008403461</id><published>2008-02-13T04:09:00.000-08:00</published><updated>2008-12-24T04:20:14.647-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LAMP'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='cli'/><category scheme='http://www.blogger.com/atom/ns#' term='command line'/><title type='text'>Woops! MySql didn't start when the server rebooted!</title><content type='html'>One of my customers had this problem today. I got a text message, "Lisha! Can you look at the server and tell me why mysql isn't working? I rebooted the server and now the website has an error. Something about Error #2002 and the mysql.socket."&lt;br /&gt;&lt;br /&gt;It turned out that when they rebooted their LAMP server, the mysql demon didn't turn on with the rest of the services like the apache http demon. Luckily, this is easy to fix. I ssh'd to their server and got to work.&lt;br /&gt;&lt;br /&gt;First, I checked to see if my hunch was right:&lt;br /&gt;&lt;code&gt;mysqladmin ping&lt;br /&gt;mysqladmin: connect to server at 'localhost' failed&lt;br /&gt;error: 'Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)'&lt;br /&gt;Check that mysqld is running and that the socket: '/var/lib/mysql/mysql.sock' exists!&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Yipes! Yup, you have no bananas (or mysql, as the case my be).&lt;br /&gt;&lt;br /&gt;Next, I ran the mysql initialization script:&lt;br /&gt;&lt;code&gt;/etc/init.d/mysqld start&lt;br /&gt;Starting MySQL:                                            [  OK  ]&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Then check to see if it worked:&lt;br /&gt;&lt;code&gt;mysqladmin ping&lt;br /&gt;mysqld is alive&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Ah, yes. All better!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Next time, we can make mysql demon startup at boot time. On a Red Hat type system you can run the following code as root (or via sudo) to run the initialization script automatically at boot:&lt;br /&gt;&lt;code&gt;ln -s /etc/rc.d/init.d/mysqld /etc/rc.d/rc3.d/S98mysql&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-7002973164008403461?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/7002973164008403461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=7002973164008403461' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/7002973164008403461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/7002973164008403461'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2008/02/woops-mysql-didnt-start-when-server.html' title='Woops! MySql didn&apos;t start when the server rebooted!'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-2058629559067421106</id><published>2008-02-11T04:02:00.000-08:00</published><updated>2008-02-11T04:38:41.100-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='zimbra'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='mail'/><title type='text'>Collecting mail from external servers on Zimbra</title><content type='html'>Do you have Zimbra users who want to pull mail into their Zimbra accounts without having to press "Get Mail" or "Get External Mail" every time? It's easy.&lt;br /&gt;&lt;br /&gt;In the Zimbra server's command line, running as user zimbra, try:&lt;br /&gt;&lt;code&gt;zmprov gc default | grep zimbraDataSourcePollingInterval&lt;/code&gt;&lt;br /&gt;If you get a response, the number it gives you is the number of seconds between checks of the external mail boxes. If you don't get any response, that means that the zibraDataSourcePollingInterval isn't set yet. Set it like this:&lt;br /&gt;&lt;code&gt;zmprov mc default zimbraDataSourcePollingInterval 180&lt;/code&gt; &lt;br /&gt;Now the external mail accounts will be checked every 3 minutes.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;But wait!!&lt;/strong&gt; There's a problem. If your users created secondary accounts before you did this, their mail might not get picked up on schedule. (This is certainly the case as of 5.0.0_GA_1869.) So, you need to set the polling interval for each of your users' data sources manually -- or with a script that you write yourself. &lt;br /&gt;&lt;br /&gt;For each user, check what datasources they have now:&lt;br /&gt;&lt;code&gt;zmprov gds myuser |grep DataSourceName&lt;/code&gt;&lt;br /&gt;where myuser is the name of the user, of course. Then, for each user modify the data source with the command:&lt;br /&gt;&lt;code&gt;zmprov mds [username] [dataSourceName] zimbraDataSourcePollingInterval [seconds]&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;For example:&lt;br /&gt;&lt;code&gt;zmprov mds myuser Migration\ Account zimbraDataSourcePollingInterval 180&lt;/code&gt;&lt;br /&gt;Notice the \ and space in "Migration\ Account" in my example. The name of this data source is "Migration Account". If you have spaces in your data source name like I do here, then you need to use the backslash (\) to escape the space. Otherwise, the system thinks that the next word is part of the next option or command in the line. (This is pretty standard *Nix-ish behavior, but if you're a newbie it can throw you off.)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:9px;"&gt;(The info for this post was found at http://www.zimbra.com/forums/installation/11487-solved-receiving-mail-multipop3-server.html and through personal experience with this problem last week...)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-2058629559067421106?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/2058629559067421106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=2058629559067421106' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/2058629559067421106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/2058629559067421106'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2008/02/collecting-mail-from-othere-servers-on.html' title='Collecting mail from external servers on Zimbra'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-7716033179776208467</id><published>2008-02-07T01:59:00.000-08:00</published><updated>2008-02-07T02:24:08.204-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='passwords'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='root'/><title type='text'>Locking Down Root</title><content type='html'>Having an active root user is generally not a good thing. If the machine is used by lots of people and several individuals do superuser tasks under the root user, you have no way to track who did what in the event that someone decides to get evil. And of course, hackers like to get root access, because it lets the do anything that they want. You don't want that, so let's lock root up.&lt;br /&gt;&lt;br /&gt;First, make sure that you have super user abilities when root is locked. If you don't already have sudo access, use root now to add yourself into the /etc/sudoers file. (I'll write an article about that soon. In the meantime, use &lt;code&gt;man sudo&lt;/code&gt; to learn more.)&lt;br /&gt;&lt;br /&gt;Now, lock root. Get out of root, if you are in it already, and as a user with sudoers privileges type &lt;br /&gt;&lt;code&gt;sudo passwd -l root&lt;/code&gt;&lt;br /&gt;Check your work with&lt;br /&gt;&lt;code&gt;sudo passwd -S root&lt;/code&gt;&lt;br /&gt;You should see something like &lt;br /&gt;&lt;code&gt;$ root L 09/11/2007 0 99999 7 -1&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The option -S gives you the status of a user. It gives you the user name, then the status (L = locked, NP = no password, P = password), the date of the last change, and then the minimum age, maximum age, warning period and inactivity period for the password.*&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Root is now locked. You can't log into root directly any more, and will have to run superuser tasks through sudo. There is still a cheater way around it, though. You can &lt;br /&gt;&lt;code&gt;sudo su&lt;/code&gt;&lt;br /&gt;and then you will be root again. (I'll explain how to fix that in the sudo article.)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Minimum age for a password says that you can only change the password ever so many days. Maximum age says that you have to change your password every so many days. Warning period is how long before maximum age is reached that the system should start warning you that you have to change your password. Inactivity period is how long after a password is expired that the login should be completely locked out. If you don't change your password before maximum age is reached, then the system will generally let you log in and immediately change your password before moving on. Once you've hit the days in inactivity period, though, you don't get a chance. It just won't let you in at all at that point. All of these ages are expressed as a number of days.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-7716033179776208467?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/7716033179776208467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=7716033179776208467' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/7716033179776208467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/7716033179776208467'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2008/02/locking-down-root.html' title='Locking Down Root'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-2509513834182457878</id><published>2008-02-07T00:41:00.000-08:00</published><updated>2008-02-11T04:40:26.042-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='passwords'/><category scheme='http://www.blogger.com/atom/ns#' term='users'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='cli'/><category scheme='http://www.blogger.com/atom/ns#' term='command line'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>Creating A New *Nix User</title><content type='html'>The easiest way to create a new user on the command line is:&lt;br /&gt;&lt;code&gt;sudo useradd george&lt;br /&gt;sudo passwd george&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;But that's not always enough. Let's say, for instance that you want people to change their password the first time that they log in and then again every three weeks. Let's set georgette up like that:&lt;br /&gt;&lt;code&gt;sudo useradd georgette -c "Georgette Userina" &lt;br /&gt;sudo passwd georgette &lt;br /&gt;(give her a throw-away password)&lt;br /&gt;sudo passwd -e -x 21 georgette&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Here's what we just did:&lt;br /&gt;sudo = "superuser do" (do this as if you are root)&lt;br /&gt;add user georgette with the comment (-c) "Georgette Userina" (-c is usually used for the user's full name)&lt;br /&gt;give georgette a password she can use the first time she logs in&lt;br /&gt;expire georgette's password immediately (so she has to change it when she next logs in) and then expire (-x) her password every 21 days.&lt;br /&gt;&lt;br /&gt;Need a short term user? Maybe you have a contractor working with your company for a short time or a friend that's hanging out at your house for the next two weeks and needs access to your Ubuntu desktop while he's there. Here's how to do it:&lt;br /&gt;&lt;code&gt;sudo useradd sammi -c "Sammi Shortimer" -e 2008-03-10&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Here we use the -e option with useradd to expire the account after March 10, 2008.&lt;br /&gt;&lt;br /&gt;If you do most of your new user adds with the same special options, you can set those things as default in the file /etc/login.defs&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-2509513834182457878?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/2509513834182457878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=2509513834182457878' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/2509513834182457878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/2509513834182457878'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2008/02/creating-new-nix-user.html' title='Creating A New *Nix User'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-3951235185050879619</id><published>2008-01-30T02:14:00.000-08:00</published><updated>2008-01-30T02:27:07.810-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='new computer'/><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><category scheme='http://www.blogger.com/atom/ns#' term='multi-touch'/><title type='text'>MacBook Air</title><content type='html'>Oh, me wants one. Me wants one bad. &lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/aoNm1ZzKV0E&amp;rel=1"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/aoNm1ZzKV0E&amp;rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Yeah, yeah, it's not Linux or OpenBSD. But it is *Nix-ish, and it's so purty. And I need a new computer, I really, really do.&lt;br /&gt;&lt;br /&gt;In real life, though, I don't have that kind of cash to throw down right now. It looks like I might be borrowing an old Mac laptop from Lior Kesos of &lt;a href="http://www.linnovate.net" target="_new"&gt;Linnovate&lt;/a&gt; shortly, so that will take care of my laptop needs. For the house I'll purchase a PC and put Linux on it (as usual). My little guy and I can make a homeschooling project out of setting up a Webcam + software to create a multi-touch, gesturable interface. I'll let you know how it goes here when we do it.&lt;br /&gt;&lt;br /&gt;Wish list for my new computer:&lt;br /&gt;  1. bluetooth (to hook up with our cell phones)&lt;br /&gt;  2. webcam for video chat with far off friends and relations&lt;br /&gt;  3. multi-touch, gesturable track-pad like input&lt;br /&gt;  4. everything I already have on my current laptop &lt;br /&gt;         (you know, like 802.11g/n, region-free dvd movie viewing, KDE desktop, some fun games, etc...)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-3951235185050879619?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/3951235185050879619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=3951235185050879619' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/3951235185050879619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/3951235185050879619'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2008/01/macbook-air.html' title='MacBook Air'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-2799720517891618519</id><published>2008-01-22T07:42:00.000-08:00</published><updated>2008-01-22T08:04:45.993-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='zimbra'/><category scheme='http://www.blogger.com/atom/ns#' term='groupware'/><category scheme='http://www.blogger.com/atom/ns#' term='mail'/><title type='text'>Mail, Calendar and Collaboration</title><content type='html'>We just set up &lt;a href="http://www.zimbra.com" target="_new"&gt;Zimbra&lt;/a&gt; at work, and I'm really pleased with it. But I'm a little wary of the fact that Yahoo! just bought Zimbra. What will happen to this platform next? Nothing bad, I hope... &lt;br /&gt;&lt;br /&gt;Here's why I like Zimbra, as opposed to the other open source groupware server packages out there. (Where to start?)&lt;br /&gt;&lt;br /&gt;1) Zimbra is made up of familiar pieces. It uses the Unix philosophy, which is to write relatively small applications and then glue them together to do big jobs. In that vein, Zimbra uses Postfix, Apache, and other tried and true tools at its base.&lt;br /&gt;&lt;br /&gt;2) Zimbra can be used with all your usual clients. It works with IMAP or POP3, and even has an available (non-open) Exchange-like piece that you can use for your (&lt;i&gt;shudder&lt;/i&gt;) Outlook users. It also has nice, standards based things like an ical version of your calendar, which you can use to connect up with standards-friendly calendar clients.&lt;br /&gt;&lt;br /&gt;3) Zimbra has a fantastic Web-based client. It's all AJAXy and buzzword compliant, but that's not what's great about it. My favorite part about it is actually reason #4...&lt;br /&gt;&lt;br /&gt;4) Zimlets. Zimlets let you create all sorts of extensions that will work in Zimbra. Here at this company we're in the process of planning the next generation of their whole in-house software system, and I'm putting Zimlets at the core of several pieces of that software architecture. Customer service, billing, accounts payable, marketing, and supply-chain will all have direct access between their respective job-function-related applications and Zimbra, both ways. For instance, a CS rep will be able to read an email sent to service@..., mouseover the customer name to see that customer's key info or mouseover the order number and get info about that particular order. Click on either one and the cs rep will go straight to the full editable customer or order page. All this, of course, will be based on Zimbra group permissions which will be sync'd up with the user/group permissions on the Web interface for our customer service tools. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As you can see, I'm very excited about the possibilities. &lt;b&gt;This&lt;/b&gt; is why I keep working in this industry. Fun stuff. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-2799720517891618519?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/2799720517891618519/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=2799720517891618519' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/2799720517891618519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/2799720517891618519'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2008/01/mail-calendar-and-collaboration.html' title='Mail, Calendar and Collaboration'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-5881718951383448820</id><published>2008-01-10T02:31:00.000-08:00</published><updated>2008-01-10T03:00:10.019-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='notes'/><category scheme='http://www.blogger.com/atom/ns#' term='highlighting'/><category scheme='http://www.blogger.com/atom/ns#' term='research'/><title type='text'>Improving Web Research</title><content type='html'>This isn't my usual level of geeky tips, but something that comes up a lot for anyone who has to learn on the Web all the time. "Back in the day" when I was in college, I read books and highlighted them as I went, or else I'd take copious notes on 3x5 cards. Then, when it was time to review or to gather the information to put into a report, I'd have easy access to everything. On the Web it's a bit different. I can read stuff, but until now, it's been a bit more difficult to gather the details I need from a specific page along with notes and references I would have written in margins or on cards. Bookmarks alone just don't cut it.&lt;br /&gt;&lt;br /&gt;There are a few tools out there now that are aiming to fix this problem, though. I use &lt;a href="http://www.google.com/notebook/" target="_new"&gt;Google Notebook&lt;/a&gt; right now as my main computer-based note taking tool, but I'm looking around to see if there is anything better. &lt;br /&gt;&lt;br /&gt;Google's Notebook tool is actually rather nice. It works with a browser plug-in that sits in the right-hand corner of my browser status bar. I can click it, and the notebook opens up. I can have several "notebooks" that each hold different sorts of information. I can type notes myself, or I can highlight something in my browser and then drag it to an open notebook, or press "clip" in the notebook plug-in, and I get a little note with the text or images I've highlighted plus a link back to that page. In the Web page for the notebook (though not in the little plug-in version) I can see the date that the note was taken, which is important for citations and the like. I like it, I'm just wondering what else is out there before I get so much data into this notebook system that migration would simply be a major pain.&lt;br /&gt;&lt;br /&gt;There is a tool called &lt;a href="http://i-lighter.com/" target="_new"&gt;i-lighter&lt;/a&gt; that looks very interesting. It allows you to use your mouse like a highlighter on the screen, and then it saves your highlighted text,  along with any other notes that you want to write. Problem? It's a Windows application. Sure, I could use it with Wine, but unless it completely rocks the universe, I don't see a reason to do that.&lt;br /&gt;&lt;br /&gt;I have heard about other pieces of software in this category that are under development, but I have yet to experiment with any of them. If you have any recommendations, I'd love to hear about them!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-5881718951383448820?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/5881718951383448820/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=5881718951383448820' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/5881718951383448820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/5881718951383448820'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2008/01/improving-web-research.html' title='Improving Web Research'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-8315923940968498841</id><published>2007-12-09T03:49:00.000-08:00</published><updated>2007-12-09T04:17:39.513-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='users'/><category scheme='http://www.blogger.com/atom/ns#' term='groups'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='cli'/><category scheme='http://www.blogger.com/atom/ns#' term='command line'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>Give a user a new group</title><content type='html'>So, you have someone who just got a new position within your organization and now s/he needs additional permissions on the server. It makes more sense to give people permissions based on their position rather than on their user. That way, you can give and take &lt;strong&gt;exactly&lt;/strong&gt; the right group of permissions for the position based on a well thought out policy rather than a spur of the moment, "I think they need x to get things done today," sort of thing.&lt;br /&gt;&lt;br /&gt;A perfect example of this is sudoers privileges. You can give specific root-type abilities to users or groups of users in the &lt;code&gt;/etc/sudoers&lt;/code&gt; file. Another example of this is when you make a certain folder owned by a specific group and have people write to it as *&lt;code&gt;themselves.thatGroup&lt;/code&gt;. &lt;br /&gt;&lt;br /&gt;You want to use &lt;code&gt;usermod&lt;/code&gt; to add  a new group to a user, but the problem is that when you use &lt;code&gt;-G&lt;/code&gt; to add additional groups, it takes the list that you give it and erases whatever was on the list before. The solution is to add &lt;code&gt;-a&lt;/code&gt; for append like this:&lt;br /&gt;&lt;br /&gt;&lt;code&gt; usermod -G groupname -a username&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now your user won't lose any of the old groups s/he had, but s/he will get the new one that they need.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:9px"&gt;*NB: There are a couple of notations for username and groupname for ownership on *Nix. One is &lt;code&gt;username.groupname&lt;/code&gt;. The other is &lt;code&gt;username:groupname&lt;/code&gt; They are often interchangeable on a single OS or distro, but sometimes you can only use one or the other for commands like &lt;code&gt;chown&lt;/code&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-8315923940968498841?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/8315923940968498841/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=8315923940968498841' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/8315923940968498841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/8315923940968498841'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2007/12/give-user-new-group.html' title='Give a user a new group'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-5573193094588107631</id><published>2007-11-19T03:56:00.001-08:00</published><updated>2007-11-19T23:41:25.078-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='packages'/><category scheme='http://www.blogger.com/atom/ns#' term='alien'/><category scheme='http://www.blogger.com/atom/ns#' term='rpm'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='deb'/><title type='text'>Turning rpm's into deb's</title><content type='html'>The phone system we use at work right now has a program called MXIE that handles telephone call logging and other whatnotery on your computer. They are nice enough to have a Linux version of the software, but not nice enough to provide source to build it from. They have binary installation files, but only in rpm format. I'm running Kubuntu on my work laptop. Rpm's will do me no good.&lt;br /&gt;&lt;br /&gt;Enter &lt;a href="http://kitenet.net/~joey/code/alien/" target="new"&gt;Alien&lt;/a&gt;. This nifty little utility will convert those pesky rpm's into deb packages so that you can install them easy-peasy on a Debianish system like Ubuntu. &lt;br /&gt;&lt;br /&gt;If you don't have Alien already, make sure you have &lt;em&gt;universe&lt;/em&gt; repositories set up, and then, from the command line&lt;br /&gt;&lt;code&gt;sudo apt-get install alien&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now you are ready for this&lt;br /&gt;&lt;code&gt;sudo alien -k name-of-rpm-file.rpm&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Dun-du-dun!!! You are now ready to install your package&lt;br /&gt;&lt;code&gt;sudo dpkg -i name-of-deb-file.deb&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-5573193094588107631?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/5573193094588107631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=5573193094588107631' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/5573193094588107631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/5573193094588107631'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2007/11/turning-rpms-into-debs.html' title='Turning rpm&apos;s into deb&apos;s'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-6392756790710983080</id><published>2007-11-18T04:46:00.000-08:00</published><updated>2007-11-18T05:08:45.460-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gettext'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='internationalization'/><category scheme='http://www.blogger.com/atom/ns#' term='localization'/><category scheme='http://www.blogger.com/atom/ns#' term='l10n'/><category scheme='http://www.blogger.com/atom/ns#' term='I18n'/><title type='text'>Internationalization/Localization Cheat Sheet</title><content type='html'>ISO 639-2 Language Codes live here:&lt;br /&gt;&lt;a href="http://www.loc.gov/standards/iso639-2/php/code_list.php" target="__new"&gt;http://www.loc.gov/standards/iso639-2/php/code_list.php&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Command Line Tools&lt;/strong&gt;&lt;br /&gt;&lt;code&gt;xgettext&lt;/code&gt; will collect all your strings for you from a file or set of files into a po file.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;msgfmt&lt;/code&gt; will turn your po files into mo files.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://info2html.sourceforge.net/cgi-bin/info2html-demo/info2html?(gettext.info.gz)Top" target="_new"&gt;info gettext&lt;/a&gt; will get you all the info you need to use the GNU gettext utility.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;File Structure&lt;/strong&gt;&lt;br /&gt;Stick your po and mo files into a structure like this:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;/src&lt;br /&gt;   /locale/en/LC_MESSAGES/messages.mo&lt;br /&gt;                          messages.po&lt;br /&gt;           es/LC_MESSAGES/messages.po&lt;br /&gt;                          messages.mo &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;PHP Functions&lt;/strong&gt;&lt;br /&gt;&lt;code&gt;putenv ("LC_ALL=es");&lt;/code&gt; sets your locale to Spanish.&lt;br /&gt;&lt;code&gt;bindtextdomain ("messages", "./locale");&lt;/code&gt; shows where to find the translation tables.&lt;br /&gt;&lt;code&gt;textdomain ("messages");&lt;/code&gt;  says what domain we're using. &lt;br /&gt;&lt;br /&gt;Internationalize your strings in PHP using the handy-dandy underscore operator. &lt;br /&gt;&lt;code&gt;print(_("Hello World"));&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;More info on gettext functions in PHP:&lt;br /&gt;&lt;a href="http://php.net/gettext" target="_new"&gt;http://php.net/gettext&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-6392756790710983080?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/6392756790710983080/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=6392756790710983080' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/6392756790710983080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/6392756790710983080'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2007/11/internationalizationlocalization-cheat.html' title='Internationalization/Localization Cheat Sheet'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-3683371079490041481</id><published>2007-11-15T04:15:00.000-08:00</published><updated>2007-11-15T04:25:28.461-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='cups'/><category scheme='http://www.blogger.com/atom/ns#' term='cli'/><category scheme='http://www.blogger.com/atom/ns#' term='command line'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='printing'/><title type='text'>Cups Printing from the Command Line</title><content type='html'>Sometimes you just need to print something without going into an application. Here's how...&lt;br /&gt;&lt;br /&gt;First, find out what printers are available&lt;br /&gt;&lt;code&gt;lpstat -a&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;That will tell you what printers are available to you. Then you can print to one of them&lt;br /&gt;&lt;code&gt;lpr -P [printer_name] [file_name]&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Need to find out what jobs are running right now?&lt;br /&gt;&lt;code&gt;lpstat -o&lt;/code&gt;&lt;br /&gt;&lt;span style="font-size:9px"&gt;(that's the letter oh, not the number zero)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Need to cancel a job?&lt;br /&gt;&lt;code&gt;lprm [job_id]&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;For more information and all sorts of other CUPS goodness, check &lt;a href="http://www.cups.org" target="_new"&gt;http://www.cups.org&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-3683371079490041481?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/3683371079490041481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=3683371079490041481' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/3683371079490041481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/3683371079490041481'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2007/11/cups-printing-from-command-line.html' title='Cups Printing from the Command Line'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-7764149864659262231</id><published>2007-11-04T07:53:00.000-08:00</published><updated>2007-11-04T08:15:48.009-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='razr v3'/><category scheme='http://www.blogger.com/atom/ns#' term='motorola'/><title type='text'>Modding an old Razr V3</title><content type='html'>Work gave me what is possibly the worst Motorola Razr phone ever. Not only that, they gave me a phone that someone must have bought on a trip to Thailand or something. It had no Hebrew fonts. No predictive typing. You couldn't move photos or videos that you took with the phone on to your computer using a USB cable the way that I can with the Razr v3x that I bought in New Zealand in December. Nope, none of that very basic stuff. &lt;br /&gt;&lt;br /&gt;They told me to have the secretary call up Orange (our company's mobile provider) and ask them to upgrade the system. Celcom (my mobile provider) had no problem whatsoever in upgrading my Kiwi Razr. Orange, however, balked. They weren't going to be "responsible" for a firmware upgrade on a phone that they did not sell. Grrr...&lt;br /&gt;&lt;br /&gt;So my boss told me to take the phone to one of the somewhat shady used phone shops that you see around town. They'll unlock phones and everyone assumed that they'd change the firmware for me, too. I tried a few places, and none would upgrade my firmware. Not one. Try here. Try there. Try the central bus station. Nope. No help at all.&lt;br /&gt;&lt;br /&gt;So, today I buckled down and decided to do it myself. I had looked around at this before, and not found tools for linux, but today I found all the tools I needed. If you are on Linux and want to change your Motorola, add new skins, flash it with new firmware, or whatever, here are some links to get you going:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Moving Files Around:&lt;/strong&gt;&lt;br /&gt;    Use moto4lin for connecting your phone to your computer with a usb cable.&lt;br /&gt;    &lt;a href="http://moto4lin.sourceforge.net" target="new"&gt;http://moto4lin.sourceforge.net&lt;/a&gt;&lt;br /&gt;    I had lots of trouble at first, but &lt;a href="http://moto4lin.sourceforge.net/wiki/Razr_V3-HELP" target="new"&gt;this page&lt;/a&gt; helped me fix it all up.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Flashing (upgrading firmware on) Your Phone:&lt;/strong&gt;&lt;br /&gt;     There is a nifty tool called Flasher. I used it to get my new language pack working.&lt;br /&gt;     &lt;a href="http://moto4lin.sourceforge.net/wiki/Flashing" target="new"&gt;http://moto4lin.sourceforge.net/wiki/Flashing&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Language Packs:&lt;/strong&gt;&lt;br /&gt;    &lt;a href="http://www.motomodders.net/default.aspx?tabid=116" target="_new"&gt;http://www.motomodders.net/default.aspx?tabid=116&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Monster Packs:&lt;/strong&gt;&lt;br /&gt;    &lt;a href="http://www.planetmotox.net/monster_packs.php" target="new"&gt;http://www.planetmotox.net/monster_packs.php&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Useful Information:&lt;/strong&gt;&lt;br /&gt;(though written for Windows users, you will still get what you need)&lt;br /&gt;    &lt;a href="http://www.motomodders.net/Default.aspx?tabid=69" target="new"&gt;http://www.motomodders.net/Default.aspx?tabid=69&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Hint for Installing Skins:&lt;/strong&gt;&lt;br /&gt;   Make sure that the directory name of your skin is the same as the name of the skin files. I had one skin named "Dragon's Dream" and I thought I was making it better by renaming the directory to "Dragons_Dream" but that just made my skin not work.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:red;font-weight:bold;font-size:16px;"&gt;WARNING! MODDING YOUR PHONE CAN KILL IT!&lt;/span&gt;&lt;br /&gt;Make sure that you have a backup. Make sure that you are using software you trust, and that you've read enough about the process that you know how it works. &lt;br /&gt;&lt;br /&gt;Happy modding!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-7764149864659262231?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/7764149864659262231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=7764149864659262231' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/7764149864659262231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/7764149864659262231'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2007/11/modding-old-razr-v3.html' title='Modding an old Razr V3'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-8010686919455724800</id><published>2007-10-30T07:18:00.000-07:00</published><updated>2007-12-09T03:37:40.432-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tar'/><category scheme='http://www.blogger.com/atom/ns#' term='bzip'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='gzip'/><category scheme='http://www.blogger.com/atom/ns#' term='cli'/><category scheme='http://www.blogger.com/atom/ns#' term='command line'/><category scheme='http://www.blogger.com/atom/ns#' term='file compression'/><title type='text'>Oh How I Hate Command Line Tar</title><content type='html'>It's cuz I'm dyslexic and I always get things backwards. Which comes first? The file I'm trying to create or the one I'm trying to tar up? Here's the answer for future reference.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;tar -cf [the file you want to create] [the file(s)/directory(ies) you want to tar]&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The "c" stands for "create". The "f" stands for "file" (the default is to pipe the tarred stuff to stdin). You can also turn it into a gzip file in the same go with the letter "z" or into a b-zip file with the letter "j".&lt;br /&gt;&lt;br /&gt;Something of note: &lt;code&gt;man tar&lt;/code&gt; actually gives useful examples, unlike most man pages which give information but no examples to help the slow of brain (like me).&lt;br /&gt;&lt;br /&gt;Here are some examples from the man page as it lives on our office Web servers which are running CentOS Linux:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;EXAMPLES&lt;br /&gt;       tar -xvf foo.tar&lt;br /&gt;              verbosely extract foo.tar&lt;br /&gt;&lt;br /&gt;       tar -xzf foo.tar.gz&lt;br /&gt;              extract gzipped foo.tar.gz&lt;br /&gt;&lt;br /&gt;       tar -cjf foo.tar.bz2 bar/&lt;br /&gt;              create  bzipped  tar  archive  of  the  directory  bar   called&lt;br /&gt;              foo.tar.bz2&lt;br /&gt;&lt;br /&gt;       tar -xjf foo.tar.bz2 -C bar/&lt;br /&gt;              extract bzipped foo.tar.bz2 after changing directory to bar&lt;br /&gt;&lt;br /&gt;       tar -xzf foo.tar.gz blah.txt&lt;br /&gt;              extract the file blah.txt from foo.tar.bz2&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-8010686919455724800?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/8010686919455724800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=8010686919455724800' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/8010686919455724800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/8010686919455724800'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2007/10/oh-how-i-hate-command-line-tar.html' title='Oh How I Hate Command Line Tar'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-5564659495944855077</id><published>2007-10-17T12:08:00.000-07:00</published><updated>2007-10-19T16:44:13.814-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>Fixing Some Little Network Annoyances</title><content type='html'>To set your IP address for your Ethernet connection and the gateway address for the world outside your local network, run these as root or sudo them...&lt;br /&gt;&lt;code&gt;&lt;br /&gt;ifconfig eth0 [ip address]  &lt;br /&gt;route add default gw [gateway ip address]&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-5564659495944855077?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/5564659495944855077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=5564659495944855077' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/5564659495944855077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/5564659495944855077'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2007/10/fixing-some-little-network-annoyances.html' title='Fixing Some Little Network Annoyances'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-603843264107126071</id><published>2007-10-09T04:33:00.000-07:00</published><updated>2007-10-30T07:32:49.853-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XHTML'/><category scheme='http://www.blogger.com/atom/ns#' term='object'/><category scheme='http://www.blogger.com/atom/ns#' term='iframe'/><category scheme='http://www.blogger.com/atom/ns#' term='W3C'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><title type='text'>No More IFrames!!!</title><content type='html'>So, you want to pull some information from another site into a Web page, and your fancy-pants AJAX idea won't work because you can't grab data from a different server using xmlhttprequest?&lt;br /&gt;&lt;br /&gt;Don't reach for that IFRAME!!! Use Object instead.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;object data="frame.html" type="text/html"&amp;gt;&lt;br /&gt;If you can see this line, your browser doesn't properly support w3c standards. &lt;br /&gt;&amp;lt;/object&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Here's the low down in the &lt;a href="http://www.w3.org/TR/1999/REC-html401-19991224/struct/objects.html#edef-OBJECT"&gt;HTML4.1 Spec&lt;/a&gt; and the &lt;a href="http://www.w3.org/TR/xhtml2/mod-object.html"&gt;XHTML 2 Spec&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-603843264107126071?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/603843264107126071/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=603843264107126071' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/603843264107126071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/603843264107126071'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2007/10/no-more-iframes.html' title='No More IFrames!!!'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-6079682529927775068</id><published>2007-10-08T09:45:00.000-07:00</published><updated>2008-02-07T02:25:08.496-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='secure copy'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='scp'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Secure Copy</title><content type='html'>scp is like cp for copying files only it can securely copy files from one server to another using the ssh protocol. This is a good thing. The bad thing is that I always forget how to write the line, because I'm a ditz that way. &lt;br /&gt;&lt;br /&gt;Here's an example of how to copy a file from a local computer to a location on a remote server:&lt;br /&gt;&lt;code&gt;scp index.php user@web2.websites.com:/mysite.com/httpdocs/index.php&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Here's an example of how to copy a whole directory from a local computer to a remote server:&lt;br /&gt;&lt;code&gt;scp -r httpdocs/. user@web2.websites.com:/mysite.com/httpdocs/.&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Notice the slash dot thing at the end of the directory name. That's so that everything under that directory gets moved. If you don't use the slash dot after the directory name you will end up with the directory inside the other directory (like /mysite.com/httpdocs/httpodocs/...) which is clearly not what I want.&lt;br /&gt;&lt;br /&gt;The -r stands for &lt;em&gt;recursive&lt;/em&gt;. &lt;br /&gt;&lt;br /&gt;Of course, you can find more details about other options that go with scp by typing&lt;br /&gt;&lt;code&gt;man scp&lt;/code&gt; &lt;br /&gt;at a linux-ish or unix-ish command prompt.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-6079682529927775068?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/6079682529927775068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=6079682529927775068' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/6079682529927775068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/6079682529927775068'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2007/10/secure-copy.html' title='Secure Copy'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-5338970127834487982</id><published>2007-10-08T01:05:00.000-07:00</published><updated>2007-10-08T01:20:08.717-07:00</updated><title type='text'>Most Israeli Web Development Sux</title><content type='html'>Why? Because they think that it's OK to develop important sites for IE only. Those of us on Linux are outa luck if we want to use a bank website or do anything at a government website or even use half the businesses in this country. It's stupid in the extreme, and if I had my way, I'd line up all the decision makers who thought that this was acceptable and slap them each upside the head one at a time. Since I don't have the opportunity, however, I have two different solutions.&lt;br /&gt;&lt;br /&gt;The first is the petition. If you live in Israel, if you read or use Hebrew Websites, or if you ever have to do business with idiotic Israeli-based sites that are written for IE only, &lt;a href="http://www.mac-it.co.il/petition/" target="_new"&gt;go sign this petition&lt;/a&gt;. We can hope that in time it will not be necessary to do the second step at all, and we can all live a Microsoft free life if we so choose. Wouldn't that be lovely?&lt;br /&gt;&lt;br /&gt;The second thing to do is load &lt;a href="http://www.tatanka.com.br/ies4linux/page/Main_Page" target="_new"&gt;IEs4Linux&lt;/a&gt;. Then you can run IE on your beautiful Linux machine or Mac when you really, really have to, and live in peace the rest of the time.&lt;br /&gt;&lt;br /&gt;Of course, this also means that if you are a Web developer who works on Linux, you can still create sites that are usable for those that choose to use IE. You see, because it's all about freedom, and if one of my customers wants to use IE, that's their business, and I should not get in the way of their ability to spend money at my site just because I don't like their browser. See? &lt;br /&gt;&lt;br /&gt;Live and let live. That's what I say.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-5338970127834487982?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/5338970127834487982/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=5338970127834487982' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/5338970127834487982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/5338970127834487982'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2007/10/most-israeli-web-development-sux.html' title='Most Israeli Web Development Sux'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5060354787311498729.post-8430352867678997571</id><published>2007-10-07T03:46:00.000-07:00</published><updated>2007-10-07T03:50:00.575-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='packages'/><category scheme='http://www.blogger.com/atom/ns#' term='package manager'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='lock'/><category scheme='http://www.blogger.com/atom/ns#' term='adept'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Unlocking the adept package db</title><content type='html'>When Ubuntu's debian-ish package manager whines about a locked package database, try this:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo dpkg --configure dpkg&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It will return an error, but your db will be unlocked and you can get on with life.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060354787311498729-8430352867678997571?l=theledgeofknow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theledgeofknow.blogspot.com/feeds/8430352867678997571/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5060354787311498729&amp;postID=8430352867678997571' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/8430352867678997571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5060354787311498729/posts/default/8430352867678997571'/><link rel='alternate' type='text/html' href='http://theledgeofknow.blogspot.com/2007/10/unlocking-adept-package-db.html' title='Unlocking the adept package db'/><author><name>Lisha</name><uri>http://www.blogger.com/profile/11199657440936213578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm2.static.flickr.com/1157/1200293212_682b2b938b.jpg?v=0'/></author><thr:total>0</thr:total></entry></feed>
