JLGoolsbee.com

Random sentiments since 2005.

I Almost Did It Again

| Comments

I almost slipped back into that phase where I spend a lot of time updating the site’s architecture, and then don’t post for months… or years. Glad I caught myself on that one, but I think subconsciously I hadn’t slipped anywhere because I did spend quite a bit of time going through all the old posts and doing some manual tweaking of the formatting here and there. It was neat to look back through the archives and see where I was, how life was going, and what was blog-worthy. It was also striking to see how many times I had “refreshed” the site; there were quite a few posts detailing everything from minor tweaks to redesigns to replatforming. I think that’s one reason I made the switch to Octopress; its inherently geared toward tinkering, and ultimately I think enjoy doing that more than actually blogging.

For example, I’ve already made my first “tweak”: I added a lightbox “plugin” to the site. “Plugin” in quotes because it’s not a plugin for Octopress, but rather a library for displaying lightboxes that I bolted onto the site manually; so much more satisfying than clicking the “Install Plugin” button in Wordpress.

The lightbox solution I chose was FancyBox, which depends on jQuery, so really I guess this could be counted as two tweaks. I went with FancyBox mostly because I couldn’t find anything I liked built on ender.js (the JS library that Octopress ships with / uses by default), and I’m not really a designer, so I didn’t really want something that would need styling. (As an aside, I think I’d love Octopress that much more if it were built on Python and jQuery instead of Ruby and ender.js, but that’s a different post.) Getting FancyBox up and running wasn’t too difficult, and I did find that someone else had already encountered a few of the issues I’d run into (link), and I followed a similar path to get it up-and-running. For examples of FancyBox in action, click this link or one of the thumbnails below (or an image in almost any post in the archives).

The Move to Octopress

| Comments

Disclaimer: This post is a retrospective on the why and how of moving my site to Octopress; as such many of you will find this post boring. My extreme apologies.

The why

Basically, I was tired of Wordpress. Tired of managing my site through a panel. Tired of my site being buried beneath layers of PHP abstraction. I’d also been wanting to move to a “baked” model for my site. A baked site means there’s no dynamic generation of the site for each user that views it (like PHP, etc), but rather it is generated elsewhere and the site viewed by the user is entirely static. I’d read a few articles on various approaches to this by Brent Simmons and Matt Gemmell. The concept isn’t new; apps like iWeb and RapidWeaver have been doing this for years, but those apps aren’t really geared towards web developers; they’re geared towards people who don’t want to get their hands dirty with hand-coding things… I’d rather get my hands dirty than not.

After doing some research on various frameworks for building a baked site, I chose Octopress. Octopress is basically Jekyll, which is basically a set of Ruby scripts for generating a static site from plain text files written in Markdown (or a couple other text formatting languages). Octopress builds on top of Jekyll by providing a good set of HTML templates, CSS, JS, and a few custom plugins, which makes getting started with your site much easier. I preferred this approach because I don’t know much Ruby (I looked for a good static site generator written in Python, and surprisingly, there’s not one), and I didn’t feel like starting from scratch on the templates. I also liked the propsect of writing posts in Markdown, which is much more awesome than any WYSIWYG editor.

The how

Exporting content and comments from Wordpress

Once I’d determined I wanted to make the switch, I started by exporting all my content from Wordpress to an XML file (Tools -> Export), and then I processed that XML file using Exitwp (python scripts for turning Wordpress XML exports into Markdown-formatted text files). I did make a few modifications to Exitwp before running it; namely turning on comments by default, removing categories (everything was in the “Posts” category), and removing the author information (so that Octopress/Jekyll would attribute posts to myself instead of “admin”). I also had to modify the part of the script that downloaded all the images because it didn’t have any error handling for unretrievable images:

def get_attachment_path()
1
2
3
4
5
6
7
if download_images:
    for img in i['img_srcs']:
-       urlretrieve(urljoin(data['header']['link'],img.decode('utf-8')), get_attachment_path(img, i['uid']))
+       try:
+           urlretrieve(urljoin(data['header']['link'],img.decode('utf-8')), get_attachment_path(img, i['uid']))
+       except IOError:
+           print "Could not retrieve: %s" % urljoin(data['header']['link'],img.decode('utf-8'))

Finally, I also downloaded and modified html2text.py (used by Exitwp) so that I could remove the line breaks that the system version was adding (I’d rather my paragraphs in Markdown be on one line). This one was a little odd, since the comments in html2text.py note that to remove the line breaks, I should’ve set the BODY_WIDTH variable to “0”, but this resulted in the removal of all line breaks, thus also removing breaks between actual paragraphs. Instead, I set BODY_WIDTH to “100000”, which as far as I can tell was large enough to accomodate the length of my paragraphs.

Getting the comments out of Wordpress was a little easier. I decided to use Disqus for comments on the new site, so all I had to do was install the Disqus plugin for Wordpress, let it import my existing comments, and then set disqus_short_name in _config.yml. The one thing that’s not well documented anywhere is that for the comments to show up correctly on your new site, the permalink format for Octopress has to match the permalink format you were using in Wordpress. Not a big deal to me, but I’m not sure what you’d do if you wanted to change your permalink structure (perhaps change it in Wordpress before importing to Disqus?).

Source control

The Octopress instructions recommend pushing any changes you make to Octopress to your own repo on GitHub. I didn’t really want to put my site up on GitHub as a public repo, and nor did I want to pay for a private repo, so I set up a private git repo on Dreamhost and set my git-cloned copy of Octopress to use that as origin.

Publishing

Originally, I had planned to symlink a folder in my Dropbox as the _posts directory, but eventually I realized that wasn’t going to help me achieve the ability to “write anywhere”, since I’d still have to regenerate/deploy the site via shell commands. So instead, I cloned a local copy of the repo on Dreamhost. This way I can write posts in any editor at any time, and then log in via SSH and run the shell commands to create the new post, drop in the text, and regenerate/deploy the site. This method also means I can’t accidentially publish a draft of a post prematurely because I forgot to mark it as a draft, etc.

As far as the actual writing and deploying, I picked up the wonderful and much-lauded ia Writer for Mac and iPad, and Prompt, a nice SSH client for iOS from the crew at Panic. iA Writer lets me write posts in Markdown (it somewhat auto-formats Markdown in the editor) and store them in iCloud, truly giving me the ability to write from anywhere, and Prompt means I can create/generate/deploy new posts from my iPad or iPhone (and of course I’ll just use the normal Terminal app if I’m on my Mac).

Other tweaks

  • I pulled much of my .htaccess file from HTML5 Boilerplate; stripped out the PHP-related stuff I don’t need anymore, and modified some of the browser cache rules.
  • Added a custom 404 page (written in Markdown, no less).
  • Added the “About” page
  • I plan to go back through most of my posts and do some post processing; little things like cleaning up formatting and such, but that’ll happen slowly over time. If anything else, it’ll be fun to look through the archives.

What’s next?

I’ll probably tweak the theme a bit, but honestly, the default theme is beautiful, sleek, and handles various viewport sizes very gracefully (go ahead, make the browser window as small as you can width-wise).

If I can think of anything else or if anybody asks stuff that I think would be useful/relevant in the comments or on Twitter, I’ll update this post.

The Catch-up Post

| Comments

I’ve written several of these “it’s been a while” posts in the lifetime of this site. This is yet another of those, except it has the distinction of being the post after the longest hiatus in my site’s history: 3 years, 5 months, and 18 days. So that’s something.

Yet again, my renewed interest in writing here again is heralded by a change in the architecture of the site, and this time, I’ve totally ditched Wordpress in favor of Octopress. I’ll post a retrospective on that later… for now, I should probably start with where I left off: interviewing for a job in Austin.

I got a job

So, “company A” turned out to be Bazaarvoice, and after a couple more rounds of interviews, they offered and I accepted my first job out of college. Looking back on it now, I had no idea how incredibly lucky I was, as I’ve not only been with them since, but the company has grown and flourished during a time of incredible economic downturn. I started on July 16th, 2008 as an “Implementation Engineer”, helping Bazaarvoice’s clients implement the BV solution on their websites. In November of 2010, I moved into a new role with the same title, but on a “SWAT team” of sorts that helps ensure that new features coming our of our Product Management and Development groups are ready for mass-consumption and by our clients and . In August of 2011, I was promoted to “Senior Implementation Engineer” on the same team. I’m coming up on 3.5 years at Bazaarvoice, and it seems pretty surreal.

I moved to Austin

Working at Bazaarvoice necessitated moving to Austin. So, on July 12th, I loaded up a U-Haul truck and moved from Abilene to Austin. Stephanie and a high school friend attending UT helped me move into my first apartment. Austin is an interesting city, and after living in the Dallas metro area (the “Metroplex”), Abilene, and now Austin, I can tell you that it’s better than Abilene for sure, but I couldn’t tell you if it’s better than the Metroplex. Austin definitely has a better restaurant scene, but Dallas and the surrounding areas have much better traffic infrastructure (roads and public transit)… not that good restaurants outweigh horrible traffic, but the verdict is still out.

I got married

On August 15th, 2009, I married my best friend and the love of my life, Stephanie Welch. I had asked her to marry me just 6 short months earlier, to which she obviously said “yes” (despite it being Friday the 13th of February). I honestly only remember bits and pieces of the wedding day, but I do know it was one of the happiest days of my life. We were married at my home church, First Baptist Church of Carrollton, we spent a couple nights in downtown Fort Worth, and we moved Stephanie to Austin just a couple days later. We went on our honeymoon a couple weeks later, which was nice because it gave us time to get Stephanie moved and settled into our apartment. Our honeymoon was a cruise on Royal Caribbean that sailed from Port Canaveral, Florida, and went to Labadee, Haiti; Ocho Rios, Jamaica; George Town, Grand Cayman; and Cozumel, Mexico before returning to Port Canaveral. … We’ve been married for a little over 2 years now!

Other stuff

Stephanie now works for Marsh USA, the country’s largest insurance broker, as a “certificate specialist”, processing insurance certificates. It’s not an incredibly exciting job, but I think it’s pretty much exactly what she was looking for.

I made my debut on national television via a CBS Evening News segment on Austin’s job market. The entire video is a good watch, but skip to around 0:55 to see yours truly.

In August of 2011, we adopted a pair of kittens; a brother and sister named Reginald and Romona. They are literally the sweetest kittens you’ll ever meet.

Today

That should bring you up to speed as far as major events and changes. I probably won’t post very often; I’ve never been good at doing that. What I will probably do though, is use this space for thoughts that I can’t fit in 140 characters over on Twitter (@jlgoolsbee). There have been several things recently that I’ve wanted to post about (through naturally, I can’t remember those things right now), but didn’t want to post on the old site because I didn’t feel like messing with it or posting one of these “catch up” posts. We’ll see how long I keep it up though.

Austin

| Comments

Well, I just got back from a 28-hour excursion to Austin, TX.  I’ve been to Austin before, but not like this… usually it’s for Cowboy Band stuff, but this time I was on my own, headed for two interviews in the North Austin area.  Crazy?  Maybe.

I left Thursday at about 7:30 PM and checked-in to a hotel a little after midnight.  I booked the hotel before I left on Hotwire.com (which was super easy), and I got a pretty good rate for a decent room.  This, in and of itself, was great because that’s something I’d never done.  I’ve never traveled to another city and stayed in a hotel by myself, so this was yet another experience that made me feel more “grown up” (I’ve had a lot of those lately).  I stayed up a little longer to do some research on the companies I’d be interviewing with in the morning, and then crashed.

I got up in the morning and was ready at 11:00 AM for my first interview with company A.  Company A is looking for a front-end web developer to implement their product on client websites (though, they give this position the fancy title of “Implementation Engineer”, which I think I like better).  I met with a panel, then a group of two for a “culture interview”, then with one guy for a “technical interview”, and finally with two of the managers of different divisions there.  I think the interviews went really well; I feel like I made a positive impression with everybody I interviewed with, and I had fun at the same time.  I was there for about 2 hours, yet it didn’t really feel like that, though I’m not sure if it’s because I was enjoying the interview or if I was just so nervous I didn’t feel the time flying by.  After finishing up at company A, I had just enough time to grab a chicken salad sandwich combo from Chick-fil-a before going to my 2:00 PM interview with company B.

As a sidenote, can I just mention how elated I was to discover that my favorite item on the Chick-fil-a menu has finally become a combo meal?  I’ve always loved the chicken salad sandwich, so much so in fact that once (I think I was 10 years old?), my mother asked what I wanted from Chick-fil-a (and for some reason we hadn’t had it for awhile)… I told her I wanted “the Chick-fil-a sandwich”, and I was shocked when she brought back a regular chicken sandwich!  I had believed until that point that the chicken salad sandwich was THE Chick-fil-a sandwich!  Anyways, combo #7 has instantly become my favorite combo number.

Company B is entirely different sort of company and as such the job there would be totally different.  However, they’re looking for a junior web developer (they’re expecting to have to teach stuff), so it would be a great learning experience.  On the other side of that, I would have to be learning a lot, because I don’t have much experience in the platforms they use.  The interview was with one person, and was interesting; he had me work through solving a logic puzzle, and though he had to guide me a little to the correct answer, I found the answer pretty easy once it was revealed.  I’ll type out the puzzle at the bottom of this post and you see if you can figure it out.  Anyways, I think the interview here went well, but we’ll find out soon because I should hear either way from both of these companies next week.

After finishing my last interview, I found somewhere to get out of my suit into normal clothes (I didn’t see a single person wearing a suit all day), and called up an old friend from high school that just graduated from UT.  We had dinner at Hula Hut, and once again I’m going to digress to talk about food.  The Cowboy Band eats at the Hula Hut every year following the Chuy’s Children’s Parade, but we always get the same shortened menu, and when I say shortened menu, I mean there’s like 4 or 5 items to pick from on there.  So, this was the first time I’ve had the opportunity to go to Hula Hut and order off the regular menu, though I didn’t really need the menu; I already knew what I wanted.  Every year CBB went there, and every year I saw someone (not with us) get a sizzling plate of fajitas topped with… pineapple.  Crazy, right?  NO.  AMAZING. I’m not kidding; today I think I ate some of the best fajitas I’ve ever had the opportunity to digest.

I hit the road at about 7:30 PM once again and got back to Abilene a little after midnight.  It’s late and I’m running out of things to write about, but it was an interesting day for sure, and I’ll be sure to post here if I get a job!

Logic Puzzle:

You’ve got 8 balls, all the same size/shape/weight except for one that’s defective and weighs less.  You have a balance scale; use the scale to find the defective ball in only two weighings.  Note: you cannot cheat by just holding them and feeling the weight difference.

Where I’ve Been

| Comments

I seem to do a lot of these “it’s been a long time since I’ve posted” posts.  I never really stopped to think about why I haven’t posted (outside of just not having time), but after reading this post by Robert Scoble, it all made sense.  Basically, I’ve been online, just not here.  I’ve been on Facebook, Twitter, etc, and just haven’t felt the need to post full posts.  When I started this blog, it was a way to share personal thoughts and to keep people up-to-date with my life… these days, it’s far easier for someone to look at my profile on Facebook, Twitter, Last.fm, Flickr, Delicious, LinkedIn, 30boxes, FriendFeed, and the list goes on.  In other words, I’m engaging in online social networks a lot more than I used to, and most of my friends are doing the same.

That’s not to say I’m done with this; I still need a place to write longer thoughts like this that won’t fit into Twitter’s 140 character limit.  So, while I draft my next post, here’s everything I’ve “tweeted” on Twitter since my last post here.

Finally enjoying IMAP-flavored Gmail… and it tastes goooood. 09:52 PM October 31, 2007 from Hahlo

It’s taking everything within me to not go home and finish setting up the new 24” iMac… must work… must make money to pay for iMac… 03:21 PM November 02, 2007 from web

Installing Leopard; 37 minutes to go. 05:59 PM November 02, 2007 from PocketTweets

I’m running the Windows-only software for my Systems Analysis and Design class… on my Mac! VMware Fusion in Unity Mode FTW!! 11:29 PM November 04, 2007 from twitterrific

How can Pixelmator expect to be a serious contender against Photoshop if it doesn’t have support for guides or rulers? 12:24 AM November 11, 2007 from twitterrific

Why am I still up at 2:30 am, and why am I so hungry? 02:36 AM November 12, 2007 from twitterrific

Thank you, Discount Tire, for charging me the sum total of $0.00 to patch my flat tire this morning. Much appreciated. 10:15 AM November 12, 2007 from web

Trying to decide if Pixelmator is worth the investment, considering I can’t really afford Photoshop at the moment. Thoughts? 11:10 PM November 12, 2007 from twitterrific

Home for thanksgiving; using my iMac plugged into the 46” HDTV with wireless mouse and keyboard… twittering from across the room FTW! 01:44 PM November 21, 2007 from web

Really wish I didn’t have class in the morning. Like really, really wish I didn’t. 01:32 AM November 26, 2007 from web

bored bored bored. 08:44 PM December 09, 2007 from web

I just finished my last final in about 5 minutes flat… everybody in the room gave me the “you bastard” look, but hooray for studying! 11:31 AM December 12, 2007 from web

Home for the weekend, then back to Abilene for one more week of work. 12:16 AM December 15, 2007 from Facebook

Just realized I haven’t twittered(?) since last week… oops. 09:32 AM December 21, 2007 from web

Trying to decide if I want to install the 1.1.3 update just yet… me likey my 3rd-party apps. 05:03 PM January 15, 2008 from web

Thinking about switching from Wordpress to Movable Type… I’m really digging the new Action Streams plugin… thoughts? 04:01 PM January 31, 2008 from Facebook

I’m finding I don’t much like Movable Type… will somebody please just make an Action Streams plugin for Wordpress? 01:38 AM February 11, 2008 from web

Terminal, TextMate, Firefox 3, NetNewsWire, Mail, iTunes, Aperture, Photoshop, & VMware Fusion without any noticeable performance drop FTW! 05:52 PM March 12, 2008 from web

My sister: “Isn’t an albino a type of goat?” 03:11 PM March 19, 2008 from web

The next release of WordPress (2.5) looks pretty darn good, and the new admin interface is actually better. Thanks @photomatt. 11:26 PM March 19, 2008 from web

Also, Safari 3.1 is… awesome. Especially awesome is the Network Timeline. Thanks Apple. 11:45 PM March 19, 2008 from web

It’s 3am… and I’m not tired. At all. WTH. Tomorrow will not be fun. Wait, today will not be fun… 03:06 AM March 20, 2008 from PocketTweets

Still sick… third day in a row… temp around 101… WTH. At least it’s giving me plenty of time to work on my senior project… ugh. 08:03 PM March 26, 2008 from web

Almost done with this senior project… wish I had time to flesh out a few more features, but I don’t think they’ll even use what’s there. 12:44 AM April 04, 2008 from web

Anybody know what happened to the “Networks” menu item and drop down on Facebook’s main navigation? Mine is mysteriously missing… 02:37 PM April 07, 2008 from Facebook

Somehow missed the post on The Facebook Blog explaining the demise of the “Networks” menu item… apparently, it just never got used. 01:03 AM April 08, 2008 from web

I’m a little perplexed by these random people following me; am I interesting, or is it just a game to see who can follow the most people? 11:31 AM April 16, 2008 from web

Why can’t I go to bed at a normal time like a normal person? Perhaps going to bed at a decent hour just isn’t normal anymore… ? 12:52 AM April 17, 2008 from web

Wearing khaki shorts for the first time this year… don’t know why that’s twitter-worthy, but there you go. 10:42 AM April 22, 2008 from web