jonEbird

December 29, 2011

Installing emacs v24 on Fedora

Filed under: adminstration, blogging, emacs, linux, usability — jonEbird @ 10:05 pm

I’ve been reading about other people giving the yet to be release version 24 of emacs for some time now. When I decided to upgrade my systems to use v24, I was a bit surprised to not find anything about configuring a Fedora system to use v24 of emacs. Guess I gotta do it myself…

This tutorial is part editorial and part instructional. I thought it would be helpful to include some of the techniques I used to get emacs up and running quickly without needing to pull my hair for other’s edification.

After realizing I wasn’t going to be able to just grab a pre-built binary, I went looking for the official sources. I ended up finding the pretest download location. First step first, let’s pull down the latest emacs-24 tarball and extract it.

PRETEST_URL="http://alpha.gnu.org/gnu/emacs/pretest/"
FILENAME=$(curl -s ${PRETEST_URL} | sed -n 's/^.*a href="\(emacs-24.[0-9\.]*tar.gz\)".*$/\1/p' )
curl -o ${FILENAME} ${PRETEST_URL}${FILENAME}
tar -xzof $FILENAME
cd ${FILENAME%.tar.gz}

If that worked, you are now sitting in the extracted directory of the latest emacs-24 pretest source. Now for some instructional information. Any significantly large project will need a decent amount of development packages installed for a successful compile and that can be a pain to identify. Earlier I claimed that I didn’t pull my hair out which means I cheated. I grabbed the latest Fedora source rpm. I didn’t actually want to install the src.rpm but rather extract the emacs.spec file which will act like a blueprint for my build. I’m going to give you the answer later but if you’d like to know how to extract the specfile, try this:
Note: You do not need to do this step. Instructional only.

SRCRPM=~/Download/emacs-23.3-7.fc16.src.rpm
# Your SRCRPM may differ depending on what you end up downloading.
mkdir tmp && cd tmp
rpm2cpio $SRCRPM | cpio -ivd
sed -n -e 's/,/ /g' -e 's/^BuildRequires: //p' emacs.spec | xargs sudo yum -y install

Note the last command in that section was a command to install the necessary development packages for our build. Since I”m not requiring you to do that above, here is the command for you:

sudo yum -y install atk-devel cairo-devel freetype-devel \
  fontconfig-devel dbus-devel giflib-devel glibc-devel gtk2-devel \
  libpng-devel libjpeg-devel libtiff-devel libX11-devel libXau-devel \
  libXdmcp-devel libXrender-devel libXt-devel libXpm-devel \
  ncurses-devel xorg-x11-proto-devel zlib-devel librsvg2-devel \
  m17n-lib-devel libotf-devel autoconf automake bzip2 cairo texinfo \
  gzip GConf2-devel alsa-lib-devel desktop-file-utils python2-devel \
  python3-devel util-linux

The other part of the specfile you’ll typically want to look at, if you’re cheating like me, is the %build section. That is where you’ll find the actual commands used to configure and build the binaries. There I found the configure switches used so I don’t have to pick out which ones I’ll need. Again, just like figuring out the development packages, figuring out configure options can also be a chore. Let’s get to configuring, building and installing it now.

./configure --prefix=/usr/local/emacs24 --with-dbus --with-gif --with-jpeg --with-png \
  --with-rsvg --with-tiff --with-xft --with-xpm --with-x-toolkit=gtk
make
./src/emacs --version # Look good? The INSTALL doc suggests testing: ./src/emacs -Q
sudo make install

Well, that worked for me and hopefully it worked for you too. If you noticed, I used the --prefix=/usr/local/emac24 option above on my configure line which means everything got cleanly installed down it’s own separate base directory of /usr/local/emacs24. Since you won’t want to use that path explicitly each time you launch emacs, we’ll have to inform Fedora of our new altenative.

sudo alternatives --install /usr/bin/emacs emacs /usr/local/emacs24/bin/emacs 20000
sudo alternatives --install /usr/bin/emacsclient emacsclient /usr/local/emacs24/bin/emacsclient 20000

And there, we’re done. Congratulations. You have installed emacs version 24 on your Fedora system. Let me know if you’ve had any problems or have a better recommendation.

December 23, 2011

Installing Pithos on Fedora within a Virtualenv

Filed under: adminstration, blogging, linux, python, usability — jonEbird @ 12:40 pm

I listen to a lot of music while at home. I am a Pandora user and have been very happy with my Pandora One subscription now for over two years. The machine used for playing my music is what I call my “media PC”. It is called that because this machine sits in my entertainment stand and is connected to my Sony receiver via HDMI making the multimedia experience as good as I can get. If you put those two facts together, you can see that I am staring at my desktop a lot and I thought it would be nice to integrate my TV into rest of the decor of the house. I primarily do that by being very selective in finding desktop pictures and generally clearing off the desktop of any clutter. Think of the large 47″ LCD television as one big painting for the living room.

Which leads me to my one, sole problem with Pandora: I like to look up and read the Artist and Title of the track being played but I don’t want the browser to also consume my visual space. (I also don’t want to mess around with Adobe Air for the desktop version of Pandora) Enter Pithos. By this point, I should point out that my media PC is running Fedora Core 15 and I’m a Gnome user (let’s not talk about Gnome3). That is important because Pithos was written for gnome users.

Pithos is great. It’s a simple UI design, still allows for normal Pandora song control, easy drop-down for my stations, can still star (thumb’s up) songs all the while being small and unobtrusive. And now we are to the subject of this blog post: Installing Pithos on a Fedora Core machine.

This installation guide will follow my other guides in the same “copy & paste” format. That is, below you should be able to simply open a shell, copy the block of shell code and paste it into your terminal and be ready to launch Pithos. The one configurable item I left in there is whether or not you’d like to install Pithos within a virtualenv or not. I won’t go into detail about what virtualenv is for this discussion, but suffice to say that you’d choose it if you want to install Pithos in a alternative path that you own instead of /usr/local/bin/. Below, when you copy & paste the instructions to install Pithos, you can simply leave out the variable "I_LOVE_VIRTUALENV" or change the value from anything but “yes” to install the “normal” way. I choose to install via virtualenv to 1. keep my system site-packages clean and 2. also keep /usr/local uncluttered. When I do this, I mostly only have to worry about backing up my home directory between rebuilds.

Again: If you’d like to use virtualenv, keep the "I_LOVE_VIRTUALENV" variable set to “yes”.
Furthermore, using virtualenv you can control the env path via setting the VIRTUALENV variable. Some people have a separate directory for their virtualenv’s. E.g. VIRTUALENV=virtualenvs/pithos
(Copy and paste away!)

# Keep this variable to install within a virtualenv.
#   otherwise, skip this line or change from "yes" to anything else.
I_LIKE_VIRTUALENV="yes"
VIRTUALENV="" # Set this to control where your virtualenv is created
# --- Rest is pure copy & paste gold ---
sudo yum -y install python pyxdg pygobject2 \
  gstreamer-python notify-python pygtk2 dbus-python \
  gstreamer-plugins-good gstreamer-plugins-bad \
  bzr python-virtualenv
# FYI, those last two are not direct requirements but tools to complete this
cd; bzr branch lp:pithos pithos
if [ "${I_LIKE_VIRTUALENV}" == "yes" ]; then
  virtualenv ${VIRTUALENV:-pithos_venv}
  source ${VIRTUALENV:-pithos_venv}/bin/activate
  # The money shot... finger's crossed
  cd pithos; python setup.py install
else
  cd pithos; sudo python setup.py install --prefix=/usr/local
fi

And there you have it. A clean, aesthetically pleasing music experience. Enjoy.
Desktop Shot with Pithos

May 28, 2011

Custom Dropbox Directory

Filed under: blogging, linux, usability — jonEbird @ 10:38 am

Ever since I rebuilt my laptop I’ve keep a file called “rebuild.txt” where I detail every little customization I’ve done. The requirement is that everything that I do has to be completely command line oriented where a block copy-and-paste would redo the same customization. So far I have things documented like setting up my local email routing, autologin to the laptop, additional RPMs w/ extra repositories, iptables rules, GTK configs, etc. The latest customization I’ve performed is when I finally decided to setup Dropbox.

I like Dropbox for it’s simplicity and the fact it integrates well with Linux. My only problem was that the directory I really wanted to have synchronized was my ~/projects/ directory. I actually didn’t do any google searches on how to change it before diving into figuring it out. I figured Dropbox would create a dot-file directory to stuff configuration and found that at ~/.dropbox/ and after that it didn’t take too much work to reverse engineer the setup.

So, here is my addition to my “rebuild.txt” file for how I would redo my Dropbox setup:
(Note: I’m running Fedora 13 but that fact really only applies to how I was installing Dropbox)


cat <<\EOF | sudo tee /etc/yum.repos.d/dropbox.repo
[Dropbox]
name=Dropbox Repository
baseurl=http://linux.dropbox.com/fedora/$releasever/
gpgkey=http://linux.dropbox.com/fedora/rpm-public-key.asc
EOF

# Now install
sudo yum -y install nautilus-dropbox
# After installing, I did launch dropbox and setup an account.

# Stop dropbox
pkill dropbox

# Modify the default location?
cp -p ~/.dropbox/config.db{,.orig}
echo "update config set value = '/home/jon/projects' where key = 'dropbox_path';" |\
sqlite3 ~/.dropbox/config.db
rsync -av ~/Dropbox/ ~/projects/

# now start dropbox again
~/.dropbox-dist/dropboxd

After setting it up, I finally realized I could have google’d this and I did for curiosity sake. A common technique I saw was around using symlinks, but I found it fun to reverse engineer their configuration and was pleasantly amused that they didn’t try to obfuscate the config. At this point I should probably stop poking around because I can see that the client is written in Python and I’m now finding other interesting things about the client.

November 8, 2010

Book Review: Influence: The Psychology of Persuasion

Filed under: blogging, opinion — jonEbird @ 8:36 pm

I just finished “Influence: The Psychology of Persuasion” by Robert b. Cialdini. I thought it was a very entertaining and educational read. It has a decidedly business / salesman focus in respect to the psychology of sales techniques but I would say the lessons are applicable to other areas of life. In fact, in each chapter Robert provides suggestions in how to resist the very potent sales techniques people often employ.

Here is quote from the epilogue which serves as a nice encapsulation of the book,

We have been exploring several of the most popular of the single pieces of information that we use to prompt our compliance decisions. They are the most popular prompts precisely because they are the most reliable ones, those that normally point us toward the correct choice. That is why we employ the factors of reciprocation, consistency, social proof, liking, authority, and scarcity so often and so automatically in making our compliance decisions. Each, by itself, provides a highly reliable cue as to when we will be better off saying yes than no..

I now plan to skim back through the chapters to review the content and internalize the content. I wish to use the knowledge of psychological influence to help improve my effectiveness in “getting work done through others”. If you work in a substantially large enough company, chances are your performance evaluations have touched on this subject before.

Robert Cialdini urges a strong rebuttal against people using the techniques, covered in the book, in a deceitful manner. I definitely do not wish to use deceitful techniques. I think a good example of using a technique covered in the book for getting work done through others is the principle of reciprocity. In fact, I’ve used this technique myself before having read the book. It’s quite simple. You go and do a favor for someone else, perhaps show them something new to better their work condition, and then they are more obligated to reciprocate the favor in return. If properly administered you can even get them to sidestep change control. (Just kidding, change controls are good.)

May 19, 2010

Happy Belated Birthday to Me

Filed under: adminstration, architecture, blogging — jonEbird @ 9:34 pm

A little play on blog titles going on here. Today I enter a new chapter in my career as I accept the Linux and Unix Architect role at Nationwide. I originally applied for the position back in February and I had hoped to land the position on my birthday in April, but the process was delayed for uncontrollable reasons. I like to be able work towards a work promotion as a birthday present for myself. In recognition for all the hard work just like four years ago when I congratulated myself in achieving Senior Systems Administrator.

I have been preparing for this position for the last few years and yet in some respects it feels like I don’t know what I’m entering. That might terrify some people but it is this very fact that most energizes me. The last time I felt this way I was transitioning from a purely development role into Administration. At the time, my high school friend Cory Sanders encouraged me in saying, “You’ll do fine.” I’ve received the same kind of encouragement recently and I appreciate the support. I’m energized about this opportunity because I will be learning so much. When I switched over to System Administration I spend hours studying admin books while my wife (then girlfriend) was working at Tim Horton’s. Fueled by coffee and donuts I climbed the learning curve as fast as I could.

My best description of a Architect is someone who leverages their broad technical experience in helping the business make decisions in what to pursue, where to invest and ultimately where to focus further development. I have always had a great deal of success in influencing people outside of my control but I plan to study that art in the book Influence: The Psychology of Persuasion. I am currently learning about personalties via Personality Plus. Somewhere in the middle of those books, I’ve already borrowed The New Rational Manager where I hope to gain a better systematic approach to problem resolution. I already consider my troubleshooting skills to be very good but I was impressed in how, now fellow, Architects were able to keep a room full of people technicians focused on the resolution in such a organized manor.

Beyond the academic focus, this new position is largely about building relationships. I need to devote time with teams and individuals at lunch, over coffee and in the hallways. They need to be comfortable coming to me with their problems and I need them to be receptive to directions I set for them. This will be the “easy” part of the job. As a person of a Peaceful Phlegmatic personality disposition building relationships is naturally easy.

Finally, I hope to largely increase my business acumen as the next Linux and Unix Architect. I am looking forward to having strategic conversations with our business partners such as RedHat, HP, Sun Oracle, Novell, IBM, Veritas and many more. I expect to be working closer with existing management on budgetary decisions. Frankly, I am struggling to enumerate further business categories for which I should be focusing on which underscores my ignorance in the field. I have had a subscription to Entrepreneur Magazine for nearly a year, watch business videos online from Stanford University and try to participate in local TechColumbus networking and business related activities. I will look for any further opportunities that present themselves to me and take it from there.

When I started mentoring with our previous Architect, I told him my goal was to take his job, “…but don’t worry, I want you to move on to bigger and better work first.” I need those kind of goals to keep me motivated. This next goal will be quite lofty and I have no idea how or when I might achieve it, but the next position I am setting my sights on is CTO. I have a feeling it’s going to be longer than four years from now that I’ll be able to write that blog post.

May 15, 2010

Sun’s Future under Oracle

Filed under: blogging, opinion — jonEbird @ 8:34 am

Nice insight into the transformation of Sun under Oracle’s helm. They talk about Exadata 2, the appliance which is using their newly acquired sparc hardware.

The machine costs more than $1 million, stands over 6 feet tall, is two feet wide and weighs a full ton. It is capable of storing vast quantities of data, allowing businesses to analyze information at lightening fast speeds or instantly process commercial transactions.

The part I don’t like about that statement is the fact that they’re trying to build both a data warehousing solution as well as a OLTP in the same machine. Sounds horribly inefficient. What I’ve taken from the article is that Larry seems to be a very savvy businessman but it’s interesting that they’ve failed in developing new software for a decade and their revenue increases came from acquisitions.

He plans on continuing to buy up more companies, in the hardware space, but once he’s done he’ll have to produce products and that is where I question their ability to deliver. It’s nice to see that he’s stopped the bleeding within Sun but now you’ve got a bruised and battered, over the hill player recovering from fractured ribs and a couple concussions available to you on the bench. It just seems like they’re taking Brett Favre and using him to coach rugby. I guess that could work?

February 24, 2010

64bit Google Chrome with Flash on Fedora

Filed under: blogging, linux — jonEbird @ 9:22 pm

[ UPDATE as of 2011-07-10 This post is no longer advisable. Please see my updated post on setting up 64bit Chrome with Flash player for recent Fedora releases. ]

This is a quick howto on getting a 64bit Flash working with your 64bit Google Chrome browser on Fedora. The unfortunate part is that I feel obligated in writing this down for people but it’s really not that complicated after you figure out a few details.

First things first, you need to get Chrome installed. I find it funny that the top hit on google for "chrome yum repo" suggests a yum repo which points to a web server containing only a Readme that states it’s not serving chrome RPMs due to “legal concerns”? Google’s top hit should be it’s own page for Google Yum Repository. There you will find a block of text for your Yum repository which I personally put in /etc/yum.repos.d/google.repo.

Currently, the rpm does not create a plugins directory so we have to create one at /opt/google/chrome/plugins/. Once you have done that, you can visit Adobe’s 64bit Flash page where you can download the compressed tarball. Inside that tarball will be a single libflashplayer.so library which you will now want to either sym link to in the plugins directory or just copy it there.

With all that in place, you are ready to fire up Chrome and tell it about your manually installed plugin. Do that via "google-chrome --enable-plugins". All should be well and instead of testing it on youtube.com, let’s go to pandora.com instead and listen to “M.I.A.” channel. That funky channel seems appropriate for this procedure.

Here is the copy & paste version: (remove the "sudo" if you are root)

# Creating the repo
cat <<EOF | sudo tee /etc/yum.repos.d/google.repo
[google64]
name=Google - x86_64
baseurl=http://dl.google.com/linux/rpm/stable/x86_64
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub
EOF
# Actually installing Chrome
sudo yum install google-chrome-beta.x86_64
# Creating a plugins directory
[ ! -d /opt/google/chrome/plugins ] && sudo mkdir /opt/google/chrome/plugins
# Grabbing Adobe's 64 bit Flash player
wget -qO /tmp/flash.html http://labs.adobe.com/downloads/flashplayer10_64bit.html
DLURL=$(sed -n '/^.*a href.*libflashplayer.*tar.gz/s/^.*<a href="\([^"]*\)".*/\1/p' /tmp/flash.html)
wget -qO- $DLURL | sudo tar -C /opt/google/chrome/plugins/ -xzvof -
# fireup chrome with new plugin
google-chrome --enable-plugins

And because I’ve been playing around with the combination of desktop background, Chrome theme and a Pandora skin in a nice, aesthetic color scheme, I’ll share a desktop screenshot of my 64bit Chrome playing some tunes.

September 16, 2009

Server Death

Filed under: adminstration, blogging, linux — jonEbird @ 7:41 pm

I often joke that the only people that read my weblog are bots, so it shouldn’t bother me if my site is down but it does. Last week the server, which was also doubling as a workstation for the wife, died. “The computer is not working”, the Wife explained. I didn’t check it out immediately as I just assumed that X had crashed or something else preventing her from using firefox. Like I said, I’m not too overly concerned with my site’s uptime.

But when I finally did check it out, sure enough, it was not looking good. Absolutely no display on the monitor. Considering I had replaced my video card not too long ago and I could no longer ssh into the machine, I am thinking that either the CPU and/or the motherboard are dead.

DeadPC
Hercules taking a look

After Hercules and I surveyed the situation, we decided to pull the sheet over it’s head. It’s had a nice long life (pc years) since 2004.

I headed to microcenter today to checkout what kind of motherboards, CPUs and even memory that they had on sale. If you consider my last machine was running with only 756M of memory, an ageing AMD 2Ghz processor on a abit kv8 motherboard while happily serving my website and handling the Wife’s facebook usage, then you can understand I was looking for the smallest, cheapest solution I could find. That solution was looking to be somewhere around $225.

Not willing to rush into a $200+ investment, I instead bought a IDE enclosure which is capable of serving my data via USB for a mere $21 bucks.

Now for the Restoration of my Website

I really shouldn’t even be talking about this. I should have had regular MySQL dumps along with full web content backed off to another machine. Aside from a laptop, the other “real” pc in the house is a Acer I bought as a media machine which sits in my entertainment center. It was never intended to be running 24×7, so I only did on-demand backups of my important files which were actually outside of my website. Another justification for not having regular backups was that I had two internal Seagate drives configured in a software mirror. I always figured if I had some sort of hardware problem, I’d be able to replace it and in worse case never really lose my data.

So I have my hard drive and am now looking to get my Wordpress site back online with the pc in the living room. After plugging in the harddrive, I need to activate the MD device and mount up my filesystem:

[jon@pc ~]$ sudo mdadm --assemble --scan
mdadm: /dev/md/0_0 has been started with 1 drive (out of 2).
[jon@pc ~]$ cat /proc/mdstat
Personalities : [raid1]
md127 : active raid1 sdd1[1]
      241665664 blocks [2/1] [_U]

unused devices: <none>
[jon@pc ~]$ sudo mount /dev/md127 /mnt

My two machines were off from each other by two Fedora releases. I wondered if I could do a chroot, startup MySQL and get a fresh, clean dump of the database…

[jon@pc ~]$ sudo su -
[root@pc ~]# chroot /mnt
[root@pc /]# ls
bin  boot  dev  etc  home  lib  lib64  lost+found  media  mnt
opt  proc  root  sbin  selinux  srv  sys  tmp  usr  var

[root@pc ~]# mount -t proc none /proc
[root@pc ~]# /etc/init.d/mysqld status
mysqld dead but subsys locked
[root@pc ~]# /etc/init.d/mysqld restart
Stopping MySQL:                                            [  OK  ]
Starting MySQL:                                            [  OK  ]
[root@pc ~]# /etc/init.d/mysqld status
mysqld (pid 9394) is running...
[root@pc ~]# mysqldump -u root -p wordpress > wordpress.mysqldump
Enter password:
[root@pc ~]# wc -l wordpress.mysqldump
354 wordpress.mysqldump

Cool!

The rest of the migration involved an rsync of /var/www/html/ content, adjustments of the default Apache config, granting access for my Wordpress user to use the database and finally updating my router to now direct requests for port 80 to my media pc.

At this point, I guess I’ll be running this site from the living room until I decide what to do about my server / workstation. I’ve always wanted to build a slimmed down, efficient virtual server to host my website and then migrate it between server and laptop during maintenance / patching of my machines, but my AMD processor didn’t support the Virtualization assistance, so it was painfully slow. I think I’ll keep an eye out for a used, server-class machine. Let me know if you find any, bots. Thanks. ;-)

September 4, 2009

Finding My Strengths

Filed under: blogging — jonEbird @ 3:17 pm

Being a #1 best selling book, there is a decent chance you’ve heard of Strengths Finder 2.0. At my work, our whole team got a copy of it. I’m busy finishing up another book, but meanwhile everyone else has completed the online assessment of their strengths and have started sharing amongst the team. So, I have decided to at least take the online assessment and share my top five strengths as well.

I must admit, I was skeptical of the effectiveness of the poll but am now pleasantly surprised to reveal such an accurate description of my strengths. Enough so to encourage me to hurry up and start reading the book. Once you complete the assessment, it will then provide you a guideline or an action plan to further take advantage of your strengths. I particularly liked the fact that it provided a nice html, printable version of that action plan which I can then easily share with others. So, without further ado, I give you my top 5 strengths:

Jon Miller’s, Strengths Finder 2.0, top five strengths

August 10, 2009

Hadoop Elephant Makes a Big Splash

Filed under: blogging, hadoop, python — jonEbird @ 5:27 pm

Big news in the world of Hadoop today. My Running Large Python Tasks With Hadoop is published in the July Edition of Python Magazine. This marks my second article with the magazine and I had a lot of fun doing it. My interest in the anti-rdbms will continue as I continue to find interesting ways to organize data in the enterprise.

While providing a gentle introduction to Hadoop, my article also introduces readers to my HadoopCalculator which you can install a couple of different ways. First way is done via git where you can pull my HadoopUtils repo from github via:

git clone git://github.com/jonEbird/Hadoop-Utils.git


That will bring a few more scripts than just my HadoopCalculator. The second way to install is to use the Python setuptools utility easy_install or pull down the source package from the Cheese Shop.

Thank you for reading this far. I lied. The big news today in the Hadoop world is Doug Cutting joining Cloudera. Had you going, didn’t I? Recently, while Doug was still with Yahoo!, the Microsoft and Yahoo Partnership had people wondering what impact that would have on the Hadoop ecosystem. Today, Yahoo! is the largest Hadoop user and for obvious reasons contributed a lot to the community. Cloudera was already a well known player in the Hadoop community but their stock has risen immensely with the addition of Doug Cutting. If they were selling stock, I’d buy.

Next Page »