genuinely likeable

I was once referred to as "a genuinely likeable fellow." The gentleman that used those words was an old school Southerner from the low country of South Carolina. (Please go back and read that first sentance using your best low country accent to achieve the full experience.) At that moment, I wasn't quite sure if that was a variation on "bless your heart" or a real complement. Over time, I've come to appreciate that comment and the attributes of someone's character that make them "genuinely likeable." Based on my unscientific analysis of genuinely likeable people, they all seem to share these qualities:

  • They make you feel better just by being around them
  • They always have time to listen and provide counsel
  • They treat you the same no matter the time of day or environment
  • They are always ready to help you solve a problem

The "genuinely likeable" often find that these qualities are part of their core personality. However, like most things in life, it takes work to maintain a state of genuine likeability. Some days are better than others. The genuinely likeable are always working to try to make more days better. Now, I'm not sure if I'm really "genuinely likeable" all of the time. My wife is probably the best person to speak on that because she sees all of the highs and lows. However, I have met a few people in my life that are absolutely genuinely likeable.

Lately, I've used my social media accounts more for verifying social network sign up functionality than I have for actually sharing things or staying up-to-date on what my friends are doing. (Sorry friends - I'll try to do better) While I was testing some facebook integration this week, I ran across several posts that made me pause and take a moment.

The first set of posts were all about Craig Walker, a friend from high school, passing away. I knew Craig had been sick for a while but his death still shocked me. You just never expect a great dad, husband and friend to pass away after only being on earth for a relatively short period of time. Craig was definitely a genuinely likeable fellow. Craig was on another level of genuine likeability. Compared to Craig, I'm downright ornery at times. My favorite Craig moments actually came after high school. I was working in Greenwood, SC at Fujifilm (there's a high concentration of genuinely likeable folks there). I'd just finished up at graduate school in computer science and was working on a new manufacturing execution system for one of the factories. Starting up a new factory or replacing a manufacturing system is a lot like working at an early stage company. There are a lot of long days working on a lot of really difficult problems. Everyone is depending on these systems to run the business. One morning I was in my cubicle working on the big bug fix of the day and a familiar face pops up over the cubicle wall. It was Craig. He was working in the HR department and he treated me like no time had passed at all since high school. We both stopped to catch up. It was a highlight of the day at the time. Now, after being a little older and wiser, I realize just how special it is to encounter someone from an earlier chapter of your life and not miss a beat even though you may have had many chapters in between that didn't include the same cast of characters. Craig treated me the same way in my post-graduate school/early career chapter as he did in my high school chapter. He was still joking and laughing and that made all the difference that morning. Craig's friends from high school and his current friends in the Greenwood area all were sharing similar stories about him. Even though we all knew Craig from different chapters of our lives, he maintained his genuine likeability throughout. That's not an easy task given all the things going on today that push and pull you in different directions. Being a consistent friend and counselor for your team or community is incredibly important to ensure the success of that group.

As I scrolled through post after post sharing awesome stories of Craig's genuine likeability, I encountered posts about another friend passing away. For a moment, my normal news feed switched from "look what I'm eating", "look where I am" and "look what I can do" to a series of thoughtful tributes to two of the most genuinely likeable folks I've ever known. The second friend, F. Hugh Atkins, was from a more recent chapter of my life. Hugh was pretty much retired when I first met him but he always seemed to still be working on something. He was a successful business man. He'd often tell me stories involving Jerry Richardson, owner/founder of the Carolina Panthers, and other powerful and influential people that he had done business with over the course of his life. Roads (I-85) and bridges have his name on them. Yet Hugh still maintained his genuine likeability after achieving levels of success that would cause many to develop a bit of arrogance and become unapproachable. Hugh was always interested in the things I was doing at work. He always knew when to break out one of his funny stories. I'd be excited to attend events just because I knew Hugh would be there and I could hang out with him and the other cool tenors that had adopted me into their group. Today I've received a number of text messages from people in the area saying that they were sorry to hear about Hugh passing away. I'm not related to Hugh. I only knew Hugh in the later chapters of his life. People from all backgrounds, beliefs and walks of life knew that I had a tremendous amount of respect for Hugh and they reached out to check in with me because they knew that he was such a positive influence on me. I've heard about Hugh being mentioned in most church services around town today. There was no need to form a committee or debate or vote on whether or not Hugh Atkins was the man. Everyone just knew it because he always made you feel like the man (or the woman) when you were around him. Hugh lived a much longer life than Craig, but they both had an incredibly positive impact on all of the folks they encountered.

When I was younger, I wanted to be the strongest, the smartest, ... the most-likely to be an action hero. Now, I believe living a life of genuine likeability is one of the highest recognitions you can receive from your friends and peers. It's not something you can earn during a 60 minute game or a few years of study or work. Working with friends, co-workers and customers each and every day to help make their lives better (even if it's in some small way) is incredibly fulfilling and appreciated in ways you may never know.

Craig and Hugh both loved football. Craig enjoyed reminding us about The University of South Carolina's win streak over Clemson in recent years. Hugh would always let me know what he thought about Clemson's most recent performance (good and bad). Today, while many of us pause to watch the Super Bowl (and the commercials), I'll be toasting Craig and Hugh and all of the other genuinely likeable folks that make our world a little more fun.

more ...

from pytennessee import reflections

Two weeks ago, something great happened in Nashville, TN. Folks from the southeast and beyond assembled at the Nashville School of Law for PyTennessee 2014. This gathering provided an incredible opportunity for Southerners to exchange thoughts about software development with some of the top contributors and speakers in the Python community and beyond. Even though it was the first PyTennessee, it was very well organized and (as far as I know) there were no instances of racism, sexism, or any other bad-isms at the conference. When I travel outside of The South and people learn that I'm a South Carolina native (which typically happens as soon as I say anything because of my accent), these are the things that typically flash through their head because of what they may have seen on the news or what has happened in the past. I was very glad to see a tech conference of this caliber take place in the southeast and the focus was on the software and nothing else. Everyone that I spoke with at the conference was excited and eager to exchange information and learn new things. Another thing that made it exciting for me personally was that several members of hub.py were able to make the trip from Spartanburg, SC to Nashville for the conference. hub.py is the Hub City Python User Group that was started a few years ago to provide regular meet ups for folks living in rural areas in Upstate, SC to learn more about software development and Python. Meet ups are regularly held at the Ironyard's Spartanburg location. I've devoted a lot of my spare time over the last few years to promoting more 'big tech' in 'small towns' with a goal of encouraging South Carolina's rural problem solvers to consider doing more with computing. So it's no surprise that my favorite speaker at PyTennessee was @2braids. 2braids aka K Lars Lohn gave a talk about his work at Mozilla collecting and processing firefox crash reports using Python. An extremely gifted technologist, 2braids lives in a yurt on an organic farm in Oregon. He also is a biker and his nickname comes from the two braids in his duck dynasty-like beard (but he was quick to inform everyone in his talk that he didn't know any cast members).

2braids also shared a couple of lightning talks about Hacking a Pellet Stove to Work with Nest and some of his work 3D printing parts for a tool organizer in his workshop.

He's a great example of what I believe many rural problem solvers in South Carolina can become provided that we give them appropriate amounts of education, equipment, and encouragement. More cool projects, including Redneck Broadband, from 2braids can be found on the twobraids blog.

I know it was a lot of work for the organizers to pull off PyTennessee 2014, but I really hope they do it again bigger and better next year. If you're looking to host a regional tech conference, they've just set the standard and provided a blueprint for success. Maybe one day we can follow this blueprint in South Carolina and host a 'rural Python conference' showcasing some of the best work from our problem solvers. Of course we'd have to get 2braids to keynote!

more ...

One of Westall's Laws

While cleaning up around the house today, I ran across some notes from grad school. I took a networking course from Mike Westall while I was at Clemson. I never took that many notes (probably should have) but I ran across a piece of paper where I had written this:

for any theory there exists a workload that will prove it correct and other theories wrong

—Westall's Law

I thought Westall was the man back then. A true hard core computer scientist. After almost a decade in industry, that quote reminds me that he's still the man.

more ...

Rocking Python in Netbeans

I'm a hard core vi user. You just can't beat it for a quick file edit. (This is where my friend, Jack Lunn, would argue that Emacs is better... but I think we can agree that both are faster to crank up than most IDEs.) Recently, I've switched to Netbeans for Java development at work. I had been using IntelliJ and it almost drove me insane. (See my post about the Corrupted Cache.) Netbeans has been working well for me, though. (It's no vi, but it does have features that are very useful when working with large projects.) With Netbeans 6.5, you can get Python support. I've been using this for a few weeks now. It's nice to have all of my Java/Python code open in one IDE. This morning, I ran across a screencast showing some upcoming code coverage support for Python in Netbeans. This looks impressive.

more ...

Rocking ZFS: Recovering from a pkg install gone wrong

I've been using OpenSolaris 2008.05 at work since it was made available. I use it as my primary OS on my work laptop (an HP Compaq 6910p My wife refers to this laptop as "the ugliest laptop in the world." Compared with the Apple products she's used to working on, the HP is not very attractive.) From the beginning, I've had issues installing/updating packages with the new IPS packaging system. I'm not dissing IPS. I just ran into a lot of issues trying to run pkg install and pkg image-update. Other people have reported similar issues with timeouts and such. Anyway, in a recent attempt to update my version of pkg, I managed to hose up my system. Having so much trouble at the command line with pkg, I decided to try out the Package Manager GUI. It allowed me to just select the latest version of pkg and install it. Everything processed successfully. I was excited! I closed the Package Manager GUI and went to the command line to try out my new and improved version of pkg. It didn't work. Even worse, I started having issues with ls and every other command I tried. Core dumps were running wild on "the ugliest laptop in the world." From another machine, I went to google and started searching to see if other people had encountered similar issues. I found one post that lead me to believe I had "updated too much." I couldn't find any posts that described how to recover from this. Determined not to give up on OpenSolaris, I started trying to get my laptop back in order. I didn't want to lose my home directory. I have tons of valuable code snippets, settings, documents, and huge subversion checkouts of various projects and branches of those projects (about 80GB of data total). So, I'm including the steps I followed to get my laptop running again (along with all of the data in my home folder) below. There may be a better way to do this, but this worked for me.

Step #1: Boot from an OpenSolaris Live CD

Boot up with an OpenSolaris CD. We're going to use the live CD to help us backup the home directory.

Step #2: Backup your home folder Open up a terminal and execute the command:

pfexec zpool import -f -R /tmp/rpool rpool

Then take a snapshot of your important data:

pfexec zfs snapshot rpool/export/home@pre-reinstall

I didn't have an external drive with enough free storage space, so I shipped the backup over to another machine via ssh:

pfexec zfs send rpool/export/home@pre-reinstall | ssh user@myhost.com "cat > ~/homedir.snapshot"

Step #3: Use the OpenSolaris Live CD to do a Full install of OpenSolaris

With my home directory safely backed up, I wiped the machine and did a reinstall of OpenSolaris.

Step #4: Boot into single user mode (login as root)

ssh user@myhost.com "cat ~/homedir.snapshot" | pfexec zfs recv -F rpool/export/home

Your home directory should be ready to go now. Reboot and enjoy.

Update: I recently used 'pfexec pkg image-update' to update my 2008.05 installation to 2008.11. OpenSolaris 2008.11 is awesome! I'm loving the Time Slider functionality. The pkg image-update worked flawlessly. My upgrade was a complete success. None of my tools or applications were broken during the upgrade. The folks working on OpenSolaris have really been putting in some hard work to resolve a lot of the early issues that I experienced.

more ...

DjangoCon 2008 Videos

I've been reading Simon Willison's blog for quite a while now. He frequently posts interesting ideas and links. Yesterday, I noticed that he had a link to videos from DjangoCon 2008 on YouTube. So far, I've watched Schema Evolution and Reusable Apps. I learned a lot from both videos. I've only been working with Django for a few months (mostly for this blog) and I'm really enjoying it. I think it's really cool that they've posted videos from the Django conference so people that couldn't attend (the conference or a particular talk) can check them out (and learn something). Living in rural South Carolina, there are not (currently) a lot of local opportunities to exchange ideas with other python developers. I hope that more (python related) conferences follow Django's lead and post conference videos. Great job!

more ...

Rocking Time Machine

Recently, the hard drive in my trusty Mac Mini decided it was going to have problems. Running some diagnostic tests revealed that it has some bad sectors. I had another firewire drive on the shelf, so I plugged it in and booted from my Leopard DVD. The Leopard Installer allows you to access several utilities including the Time Machine recovery functionality. So, I selected my Time Machine drive and asked the utility to recover my machine to my spare firewire drive. In a little under two hours, my machine was up and running again -- booting from that spare firewire drive. The recovery process was simple and worked flawlessly. I've never been very good about properly backing up my data. Thanks to Time Machine, I don't have to worry about it any more.

more ...

Rocking Byteflow: Wordpress to Byteflow Migration

Rock the Fat Knot was recently migrated from WordPress to Byteflow. This migration also included moving the site to a Joyent Accelerator running OpenSolaris. I wanted a good way to develop and test things out locally, so I created an OpenSolaris virtual machine on my Mac using VirtualBox. I used an OpenSolaris 2008.05 disk for the install. It's a newer build than what's running in my Accelerator, but I'm OK with a close approximation for this work. I was more concerned with running the same Python, mod_python, Apache, and MySQL builds. I followed this guide to get OpenSolaris up and running in a virtual machine. I had difficulties getting the VM's network connectivity working. I tried changing the VM's network adapter to "Intel PRO/1000 MT Desktop (NAT)" and it worked. (Note: I'm using about a one year old Mac Mini. PC Net may work for others.) To get name resolution working, I had to add the entries from my mac's /etc/resolv.conf to the /etc/resolv.conf in the VM. I wanted to be able to access my Apache test server from the Mac, so I used VirtualBox's VBoxManage program to setup some port forwarding. I ended up mapping host ports 2222 for SSH and 4444 for http (no particular reason for choosing those ports). I called my VM "OpenSolaris2008.05", so I ran these commands from a terminal to configure the port mapping.

VBoxManage setextradata "OpenSolaris2008.05" "VBoxInternal/Devices/e1000/0/LUN#0/Config/httpd/GuestPort" 80
VBoxManage setextradata "OpenSolaris2008.05" "VBoxInternal/Devices/e1000/0/LUN#0/Config/httpd/HostPort" 4444
VBoxManage setextradata "OpenSolaris2008.05" "VBoxInternal/Devices/e1000/0/LUN#0/Config/httpd/Protocol" TCP

VBoxManage setextradata "OpenSolaris2008.05" "VBoxInternal/Devices/e1000/0/LUN#0/Config/ssh/GuestPort" 22
VBoxManage setextradata "OpenSolaris2008.05" "VBoxInternal/Devices/e1000/0/LUN#0/Config/ssh/HostPort" 2222
VBoxManage setextradata "OpenSolaris2008.05" "VBoxInternal/Devices/e1000/0/LUN#0/Config/ssh/Protocol" TCP

These commands map port 4444 on the Mac to port 80 of the OpenSolaris VM. Likewise, port 2222 on the Mac is mapped to port 22 of the VM. Now, I can test the site from Safari and Firefox on the Mac by navigating to http://localhost:4444. I can also ssh to the vm using a command like this:

ssh -oPort=2222 vmuser@localhost

With a VM up and running, I exported my Wordpress blog data to a WordPress eXtended RSS (WRX) file. Using WXRImporter.py from Greg Heartsfield (see this thread on the byteflow-users list for usage), I imported my blog data in the WXR file into my byteflow database.

To ensure that people didn't lose my RSS feed, I added a few lines to my Apache configuration:

RewriteEngine On
#Redirect Wordpress RSS Feed to Byteflow
RewriteCond %{QUERY_STRING} ^feed=rss2$ [NC]
RewriteRule ^/$ feeds/rss/blog? [R=301,L]

This ensures that people using my old feed URL still find the latest posts.

I also added this rewrite rule in my dev VM for sanity (I seemed to be getting strange name resolution problems without it):

RewriteCond %{HTTP_HOST} ^localhost$ [NC]
RewriteRule ^(.*)$ http://127.0.0.1$1 [R=301,L]

The dev VM setup has been working out very well for me. So far, I've not run into any issues when deploying changes out to my Accelerator. Testing things out locally, in a VM that's pretty close to my Accelerator, is very nice. I've also been using VirtualBox at work to run a Windows VM. It's shaping up to be a very nice product. It includes a nice set of command line utilities.

Anyone out there got tips for developing/testing apps that are deployed on a Joyent Accelerator? I know Joyent probably wouldn't mind selling you a development accelerator, too.

more ...