Command popularity contest

This meme on popular commands seems pretty interesting. I’m normally not into this stuff, so here goes.

donnie@comet $ history|awk ‘{a[$2]++} END{for(i in a){printf “%5d\t%s \n”,a[i],i}}’|sort -rn|head
61    ls
36    cd
35    sudo
33    nano
28    grep
24    e
23    qlist
15    man
15    git
14    cmake

Despite what you might expect, cmake has nothing to do with the build system. I had it set up before I’d ever heard of that cmake. To make sense of the above, you’ll need to see a couple of aliases.

donnie@comet $ type cmake
cmake is aliased to `PATH=”/usr/lib/ccache/bin:${PATH}” make’
donnie@comet $ type e
e is aliased to `pquery –raw -n -v –attr=license’

You can see that cmake is for when I want to compile stuff faster using ccache, and e is for searching through packages using pkgcore. Also, nearly every time I run sudo it’s because I’m emerging (installing) a package. The qlist command is for querying installed packages. In all, I spend a whole lot of time dealing with packages, which isn’t terribly surprising since I’m a distro packager.

You can also tell that I spend a lot of time reading documentation and searching for information from my use of man and grep.

Nowadays all my projects are maintained in git with the exception of a few Gentoo repositories. People have been writing about how great it is all over the place lately, so I’m not going to talk it up any more. When I make quick changes in these projects or any other files, I generally use the nano editor. For more involved sessions, I’m gravitating more and more toward emacs since starting to use it for its amazing XML editing mode called nxml-mode.

Please let me know whether you got a bit more value out of this meme post than some other ones because of the explanations that accompany it.

How to win friends and influence people

Recently I mentioned Paul Graham’s essay on how to disagree, which described types of disagreement. This post will instead really tell you how to disagree without making enemies, and more generally how to get along well with people.

Here’s a summary of Dale Carnegie’s outstanding book (with the same title as this post), which has been a top-selling communications book for the past 70 years. These techniques don’t sound terribly original or mind-blowing. Instead, they are elegant and straightforward, which makes them easy to remember. I’ll also tell you which principles I think are the most important.

Fundamental techniques in handling people

  1. Don’t criticize, condemn or complain.
  2. Give honest and sincere appreciation.
  3. Arouse in the other person an eager want.

These ideas lay the groundwork for everything else. The overall focuses of the entire book are:

  • Encourage the positive things people do, instead of disparaging the negative.
  • Talk about what other people want, instead of what you want.

6 ways to make people like you

  1. Become genuinely interested in other people.
  2. Smile.
  3. Remember that a person’s name is to that person the sweetest and most important sound in any language.
  4. Be a good listener. Encourage others to talk about themselves.
  5. Talk in terms of the other person’s interests.
  6. Make the other person feel important–and do it sincerely.

The most important points from this group are 1 (be interested in others) and 5 (talk in terms of their interests).

12 ways to win people to your way of thinking

  1. The only way to get the best of an argument is to avoid it.
  2. Show respect for the other person’s opinions. Never say, “You’re wrong.”
  3. If you are wrong, admit it quickly and emphatically.
  4. Begin in a friendly way.
  5. Get the other person saying “yes, yes” immediately.
  6. Let the other person do a great deal of the talking.
  7. Let the other person feel that the idea is his or hers.
  8. Try honestly to see things from the other person’s point of view.
  9. Be sympathetic with the other person’s ideas and desires.
  10. Appeal to the nobler motives.
  11. Dramatize your ideas.
  12. Throw down a challenge.

Important points here are 3 (admit your mistakes), 4 (begin friendly), and 8 (step in their shoes).

9 ways to change people without giving offense or arousing resentment

  1. Begin with praise and honest appreciation.
  2. Call attention to other’s mistakes indirectly.
  3. Talk about your own mistakes before criticizing the other person.
  4. Ask questions instead of giving direct orders.
  5. Let the other person save face.
  6. Praise the slightest improvement and praise every improvement. Be “hearty in your approbation and lavish in your praise.”
  7. Give the other person a fine reputation to live up to.
  8. Use encouragement. Make the fault seem easy to correct.
  9. Make the other person happy about doing the thing you suggest.

The first 5 points here are the most important, although all of these ones are important.

Conclusion

Best of luck to you in applying these principles to your own life!

Get your hot new X leetness in Gentoo

Live-git packages for much of X.Org (the important parts, anyway) are now available in Gentoo’s x11 overlay, thanks to James Cloos. I hope you’re all very happy that he’s merged his work into the main project overlay–I know I am. Gentoo users can add this overlay by installing layman and running `layman -a x11`. All the live-git packages are in package.mask, so you’ll need to unmask them–portpeek is one easy way of doing this.

xorg-server-1.5 prereleases are also in there. So far that’s just 1.4.99.901, but more should show up soon. They’ll remain in the x11 overlay until they build against packages that have actually been released, at which point they’ll move to package.mask in the main tree. Any xprint users, feel free to contribute patches to fix its build. I know Debian already has some patches for this, so that would be a good place to start.

How to disagree

Paul Graham‘s writing is hit-or-miss for me. His most recent posting, called “How to Disagree,” definitely hit home. Everyone involved in a community should read it. It describes a hierarchy of disagreement types from irrelevant insults to arguments that actually refute to the main point. After you read it, you will recognize which responses are baseless claims and which ones deserve consideration. This will also help in understanding debates of all sorts that you aren’t involved in but just observe.

Mix a tight package GUI with Gentoo for Summer of Code

PackageKit is this amazing idea of having a tool for managing packages that works identically on every distribution. It’s got both a GUI and a command-line tool, called pkcon. Check out some screenshots. To reach that goal, it has to actually work on every distro.

Wouldn’t it be great if PackageKit worked on Gentoo? You could make that happen! Three major package managers work with Gentoo: portage, paludis, and pkgcore. Working on this as a Summer of Code project means you’d write a PackageKit backend for one of these package managers, in the process learning the API of each and working with PackageKit founder Richard Hughes, me, the developers of one of the package managers, and the broader Gentoo and PackageKit communities.

Three potential applicants have already talked with me about this, so space is limited. You can reach me by email or on IRC (irc.freenode.net/#packagekit as dberkholz) if you’d like to talk about your ideas.

Summer of Code applications are only open until April 1, 0000 UTC, so apply now!

Redux: Gentoo’s top 3 issues

People were so busy complaining about my pie chart that most of them apparently didn’t have a chance to think about the meaning of the actual data. To try helping people look at the information rather than its presentation, here’s a bar chart of the same information:

I don’t recommend looking at it because you may go blind, but I’ve made available the (extremely ugly) script that created this.

What are the top 3 issues facing Gentoo?

I ran a quick, informal poll on the internal Gentoo developers’ list last week, and tonight I began analyzing the results. 50 developers responded to my 9-question survey, and I’m going to post the results of 1 question at a time.

First question: What are the top 3 issues facing Gentoo?

Pie chart

Technical issues are way down on the list. Developers’ top 5 issues are manpower, publicity, goals, developer friction, and leadership. It’s good to see that we’ve been addressing at least a couple of them with the newly energized public relations project and work on the Code of Conduct. Other issues that have been ongoing for quite a while now are the lack of distro-wide vision and goals. The Council could provide those by increased activity and taking stronger stands in particular directions, and that’s part of the reason I did this survey—to figure out which directions our developers care about. I think part of the problem is that nobody sits around pondering directions and ideas. Everybody’s busy working in their own little areas and not thinking about the big picture. Manpower, or lack of it, is another issue I’m indirectly addressing in my push for greatness, which I’m going to post more about at some point (I promise!).

To create this chart, I used Google’s excellent chart API. The neat part about the API is that it’s simply a URL, so you can construct it with any language. I used a shell script since I was already fiddling around with awk. Any answer with less than 4 respondants was grouped into Other to make the rest of the chart readable.

LCA attendees rank Gentoo #4 distro

Everybody who went to LCA entered their distro, editor, and shell upon registration. Peter Lieverdink posted graphs of the results.

Gentoo made an excellent showing, coming in 4th after Ubuntu, Debian and Fedora. This is particularly neat because LCA attendees fit Gentoo’s target audience really well: developers and power users.

Thanks to Daniel Black for the link to that graph.

Improving Gentoo’s PR

This won’t be a long post, because I’m tired. Sorry for the dearth of posts on here, but I’ve been busy writing other things—see below.

For anyone who hasn’t heard, I took over as lead of Gentoo’s public relations efforts a little over two weeks ago. Three days earlier, I wrote an LWN article concluding that Gentoo isn’t falling apart, but it’s totally failing to communicate. After writing that article, I realized that somebody had to step up to deal with this problem—who better than me?

My focus right now is showing people that Gentoo development is just as alive as it’s ever been. I’m doing this by opening windows into development through more frequent news postings, with links to discussion forums to respond to the posts. Doing this, combined with writing to people (“You will”) rather than about them (saying “Users will…”), will help build better relationships with our users.

Another part of improving the perception of a lively, active community is updating the look of our website. The old website redesign never made it to fruition, so a few of us have begun taking a look at how far it got, what happened, and what to do now. At a minimum, I’d like to make some slight changes to give our site a face lift. The design hasn’t changed for 6 years now, and it shows.

One major, easily fixable problem with our website is that there’s no obvious place to go for users who want to contribute. There should be a big “Get involved!” or “Help Gentoo!” link right up at the top of the page, next to “Get Gentoo!” All this requires is a little webpage that describes all the ways people can help. In fact, the whole website isn’t task-oriented enough. This needs to change.

In the future, I’m going to begin improving the “press” aspect of PR, based on my notes from an excellent talk by Josh Berkus at OSCON 2006 on public relations for OSS projects. The main ideas here are providing a press kit for reporters with all the basic info they want, building relationships with local reporters by using local Gentoo contacts, putting together some case studies of people and businesses using Gentoo in interesting ways, and improving our process for creating and posting news and press releases.

Finally, any Gentoo users can help improve Gentoo by simply advocating it to Linux users you know, giving demos and talks at Linux user group meetings or conferences, promoting it in articles, or writing in your blog about something Gentoo does really well.