is a Software Craftsman living near Richmond, VA. He owns Juicy Parts Software, where he works closely with Clients to build the right solution. Mel is also the organizer of the Central Virginia Ruby Enthusiasts Group. When he is not writing code, Mel spends time with his beautiful wife and three kids. He's also an avid Detroit Red Wings Fan.
I’m back at RubyNation again; 3rd year in a row for what I feel is the best regional conference out there. But I’m biased. Why am I writing this blog post? Well, I briefly thought about ‘in-conference’ blogging. When I say ‘briefly’ I mean for about 3 nanoseconds. For me it’s difficult to concentrate on the presentation while either taking notes or creating the blog post; I can’t multitask.
However, I still wanted to let folks know about this awesome conference.
First, it’s a well run conference: there’s always time between sessions, the food is always good and the snacks are always delicious. Couple that with near endless coffee and you can probably tell why I think it’s a great conference.
Second, there is always a plethora of fantastic talks and stellar presenters. Without fail, RubyNation is able to attract big name folks for the keynotes. It’s quite impressive.
Third, location. I mean, Reston VA is quite close for me and Dulles is right down the street. DC as the backdrop is also attractive for those able to spend a couple extra days sight-seeing.
What’s the theme this year? Well, it seems like a huge focus on front-end, client-side development and evented, asynchronous computing. Though I’m interested in the evented stuff, I’m really interested in the front-end stuff. I’m really digging the talks covering Backbone.js, Spine.js, HTML5, CSS/SASS/Compass, Mobile Development, JQuery Mobile. All of that on the First day!
Tomorrow promises to be equally awesome.
Cheers
While Octopress makes it easier to blog (at least for me anyways), you still need the willpower, discipline, routine, etc, to keep it going.
Right now I’m struggling with what information I want to talk (blog) about here. Is this strictly a personal blog? Will I also blog about work-related topics here? More than likely it will be a combination of the two.
I do have plans of building out http://juicyparts.com as my business site and it will also have a blog that will be strictly work- and technology-related. On this site, I’ll have both.
So what have I been up to since I last blogged? Oh yeah, I did get some feedback on my Octopress requests; more on that later.
As is par for the course I’ve been busy. Busy with Family, Clients, and CVREG. I’ve also started helping out more with Noah’s Scout Pack. Then Heather recently had knee surgery and, because she can’t drive yet, I’ve been driving the kids to work, school, events, etc.
Client work has been steady and piling up. I received some news about a product I built; it’s both exciting and nerve racking.
But at the end of the day I feel like I’m going in a hundred different directions all at once. It’s hard to blog under those conditions.
Ok. Enough whining. Chat ya later…
Cheers
First off, and most importantly, I’m really digging Octopress. I think Brandon Mathis has done an excellent job of packaging all kinds of cool things on top of Jekyll. But I want to do more. I want to learn more of the internals. I have a couple of things in mind that I would like some assistance with:
Right now all posts go into my source/_posts directory. Which is
fine when I have a blog post mostly thought out. However, many times I
have an idea of a blog post that I would like to stash in a document
that isn’t publishable, a rough draft, if you will.
What’s the simplest thing that could work in order to implement this feature?
Right now I just created a source/_drafts folder and if I have
something I want to stash away, I do the following:
1 2 | |
Not elegant; but gets the job done.
When I’m ready to publish the blog post I just move it to the
source/_posts directory.
Is there a better solution?
Do the kool kids still post to Trackback URLs? I mean, if a blog author is going to go to the trouble of providing a Trackback URL and you’re writing a blog post that compliments their post, why not hit their Trackback URL?
There is where I’m completely lost within Octopress/Jekyll. The site gets generated and uploaded. How would I post back to a blog author’s Trackback URL?
As I’m using Octopress more I really want to learn how to take advantage of it and Jekyll. I really want to learn about plugins and extensions. But I have two immediate needs: Drafts and Trackback URLs.
Any assistance will be greatly appreciated (and blogged about).
Cheers
My friend Joey Beninghove started this weekly Developer Chat called Coder Talk. I tried getting on the very first session but my laptop decided to be mean; it was an excellent session on Cucumber and TDD. You’re going to have to trust me on this one because, unfortunately, the session wasn’t recorded.
But every session since then has been recorded, edited, and made available for listening; including tonight’s session on which I was able to join. Visit the site to get information on downloading previous sessions and joining the conversation.
Disclaimer: I knew next to nothing about the pipeline before tonight’s session.
Because I still have Rails 2.x projects and my Rails 3.0 projects are not in production, I was not able to contribute during this part of the talk. However, from the conversation, I learned a lot; I feel I’ll be better prepared when I start using it.
To me, and I’m probably wrong and over simplifying and wrongly over simplifying, but to me it sounds like a mini-CDN embedded into my Rails app that should be behind a caching solution. But I could be wrong.
This is a classic problem. ‘nuff said.
We had a quick chat on splitting up your application into more managable pieces, with a slant towards easier upgrading.
There was mention of needing Rails to make this easier but that position was contested, stating it’s more an architectural issue than a web framework issue.
There was a general consensus that Security makes the implementation of this application segmenting difficult, if not impossible. However, Engines was presented as a possible solution.
And as far as architecture goes: implementations can be realized either with a server-per-application-function or a port-per-application-function; and there may be something in-between or quite different all together. Regardless which architecture is selected, care must be taken when splitting up an applicaiton.
I hope I was able to contribute to the conversation. I had fun and would like to join in next week’s chat. And, while I had planned on doing some billable work, I’m very happy Joey called me.
Cheers
Ok, this one really wasn’t on the list but I went ahead and configured this site for Feedburner support. You can subscribed via RSS/Atom or with your email address.
Again, Octopress made it simple by offering two configuration items I only had to set with the correct URLs.
I may (or may not) style the subscription buttons differenly when I retheme the site. I’m also considering creating a feedburner plugin that will pull in their styled buttons and/or chicklets.
What’s left on my list? you may wonder. Right now it’s creating a new theme for the blog and configuring ‘melriffe.com’ to resolve to this blog.
Cheers
Time to scratch another item from the list of blog enhancements: Google Analytics.
This one was easy since I already have a Google Analytics account for my Business Website (http://juicyparts.com). Unfortunately the site’s currently: Under Construction
So, adding Analytics to my personal blog was fairly straightforward:
google_analytics_tracking_id to the newly created property idScratch one off the list; comments are now enabled on this site!
Octopress makes it very easy to integrate Disqus! into your blog: you just need the short_name. From start to finish it took me, roughly, 15m to enable comments.
First, I signed up for a Disqus! account; they’re free. Unfortunately, my initial short_name was already taken. I changed it to what this site will eventually become. I then enabled all the options I could.
Second, I signed up for an Akisment account because Disqus! offers Akisment integration. For personal blogs you can use Akisment for Free. With API Key in hand, I completed my Disqus! configuration.
Now, it is at this point I preview my site locally and beam, ear-to-ear upon seeing the Comments section. I deploy my site and verify that, indeed, folks can add comments; I add the first comment.
Then I start filling out my Disqus! profile, enabling services, changing my profile picture, following some folks. And I thought: Blog about enabling comments on your blog!
Cheers
While Noah, my son, has been in Cub Scouts for a few years, this is the first time we’ve tried online popcorn ordering. If you can help out, Noah would greatly appreciate your order. One of the benefits of ordering online is getting your order directly shipped to you.
Every sale will help Noah earn money for his Pack so they will be able to fund many of their planned activities. Did you know that 70% of your purchase goes to Noah’s Pack and Council?
I really want to emphasize the direct shipping. Because a large portion of our family lives out-of-state, it’s really difficult asking them to purchase popcorn and ship it to them. With online ordering, Trails End will ship the order directly to them.
Again, if you can help, it will be greatly appreciated!
Noah has been in this pack a couple of years. He’s a Webelow2 this year; next year he’ll be a Boy Scout. Last year was a really good year for him and he’s excited for this year. In fact, this weekend (17-18 Sep), he and his pack are going camping at Luary Caverns.
And Noah is really flourishing in Scouts. He’s quite the Outdoorsman and Craftsman.
Heather is now a Pack Leader, the Assistant Cub Master. If you know Heather then you know she’s a “hands-on” Mom. It was just a matter of time, in my opinion, before she would be helping to run Noah’s Pack.
If you’re in the Mechanicsville, VA area and would like to know more, feel free to contact me and I’ll put you in touch with the right people (i.e. Heather).
Cheers
I’m starting to make some plans to bring this blog up to where I want it:
I think the new theme will be the toughest because I want to create it in the Style of existing Octopress Themes. Right now there are no dates associated to my tasks because it’s definitely ‘spare time’ activity. However, each new feature will have an associated blog post. Hopefully I can share something new for the folks.
Cheers
Today I got a new phone. The HTC EVO 3D. Why? you ask. I dropped my Palm Pre last night and it didn’t survive the fall. :-(
The Palm Pre was a good phone and I really liked WebOS; I liked the “swipe to dismiss an app” metaphor. But, alas, the good times had to end sometime. I was just hoping it would have been a little longer.
Last night, while getting out of my car I fumbled my phone. While it was falling, I over-reacted and actually hit it, propelling it to the floorboard. Due to damages already received from previous drops the screen cracked and there was no life visible when I powered it up. I was sad. I was very sad.
I was already considering upgrading my phone when my discount became available. Although my Pre was a good phone it started acting up; randomly calling people and bringing up apps. But now that it was broken I just decided to bite the bullet and upgrade. Oh sure, I could have had Sprint send it for repair but it was time to move on. It was time to retire the Pre; I don’t hold much hope in HP.
So I jumped in my car and headed over the Sprint Corp. Store in downtown Short Pump. Though I don’t need the 3D camera I like the fact this version of the EVO has a better processor than its predessor.
As some may know I’ve been a Sprint Customer for years; since 1997 I believe. And now the entire family (sans 10 year old son) has cell phones and yadda, yadda, yadda.
They (Sprint) get you with the discounted prices and because I didn’t have any upgrades available (every 2y a phone is availble for an upgrade) I had to pay full price. Ouch! But doable!
I have a lot to learn about the phone and its capabilities. But, at least, I know how to take/receive a call.
Will this be the phone that entices me to do some Android development? Inquiring minds want to know…
Cheers
Before I started the transfer of my wordpress site to here, I found a couple resources I thought I should save:
I’m still reading through the first site. However, using it and the 2d site I was able to import the majority of my old posts into my new blog. I had some trouble at first, trying to follow the directions of the migration process. In the end here’s a summary of what I did:
The resulting markdown files still have some formatting issues. I have to go through and correct each one. However, because of the export process, I was able to import my pages and a few attachments. Right now I have no plans on using them.
Over the next couple of days I plan on fixing the formatting issues and getting more familiar with Octopress and its capabilities.
Cheers
Since RVM come onto the scene, I’ve heard great things about it. But everything I heard was in the context of Snow Leopard (Mac OSX 10.6). For reasons better left unsaid, I’m still on Leopard and was doubtful I would be able to take advantage of RVM.
So I did what most people do: I turned to Google. At first I didn’t find any helpful posts. However, one post stood out and I diligently followed its directions. I made sure I had the right version of XCode. I updated SQLite3. I then installed RVM. Here’s where the fun begins.
I followed the installation directions, updating my .bash_profile as instructed. I then restarted my Terminal session and patiently waited…WTF! My window disappeared! I finally was able to edit my .bash_profile and commented out the line that loaded ~/.rvm/scripts/rvm. Now what?
I then decided to manually source the rvm script in the hopes of seeing an error or something. No dice. Great! No output and my window keeps disappearing. I search the available help and troubleshooting guides: Nothing. I go back to Google: Nothing. I find nothing that is similar to my problem. sad trombone
So I head over to the IRC channel: #rvm on freenode.net. And a couple of folks start helping me out. First I tell them about some warnings I received during installation. I then reinstall (and rvm reload) upon their suggestion. No change in behavior. I tell them, “There’s no output and then after a second or two my Terminal session disappears.” They check my shell: echo $SHELL => /bin/bash. Nope that’s not it. They ask for rvm info. Well I have to run ~/.rvm/bin/rvm because I can’t load RVM as a function. The output looks ok. They ask about my .bash_profile; I also include my custom prompts, thinking I might have a problem there. Nope, all of that looks good.
In between the IRC exchanges I learn about set +e and set -x. Using those two, I’m finally able to see the output from the script and, as I had suspected, the script is stuck in an endless loop! Great! How do I debug that? BTW set +e means: Don’t exit on error and set -x means: debugging outputThe folks helping me are out of ideas; one even nukes and reinstalls RVM; it works for him. It must be something unique to my machine. I feel I’m in store for a lengthly and, quite possibly, fruitless search. Thankfully I have some output captured, early output before the session window disappears. I load up MacVim with the scripts and start looking at each line, comparing it to the output.## Foiled by ‘:’
As I was going through the output I noticed a ‘cd ..’ command. I couldn’t find it in the scripts. Thinking, “somewhere they have to be ‘cd’ing because it’s in the output.” And then it dawned on me: wait a minute, I have ‘:’ aliased. Just at that moment I was pinged from IRC. I excitedly replied that I might hove found the problem. On line 40 of ~/.rvm/scripts/initialize is: : \. Substituting my alias for ‘:’ the output matches; it’s trying to ‘cd’ into several directories. I remove the alias and reload my Terminal session.Drum roll please: rvm is a function. SUCCESS! Now I can take advantage of RVM.Funny thing is: no one thought to ask about my aliases. Assuming I would know that ‘:’ is null, a do nothing command. I do now. And hopefully this will help someone else with similar problems in loading RVM.Cheers!
$ git clone [repository url] [new name] $ cd [new name] $ git remote add xorigin [new repository url] $ git remote rm origin $ git remote rename xorigin origin $ git push -u origin master
Cheers!
wget http://www.kernel.org/pub/software/scm/git/git-1.7.3.2.tar.gztar xzvf git-1.7.3.2.tar.gzcd git-1.7.3.2./configuresudo make && sudo make install
Verify by running git –version.
wget http://www.kernel.org/pub/software/scm/git/git-manpages-1.7.3.2.tar.gzcd /usr/local/share/mansudo tar xzvf [download_dir/]git-manpages-1.7.3.2.tar.gz
Verify by running man git.
Cheers!
I guess the title’s mostly unfair since I’m not going to deliberate on the future of Co-Working, or Telecommuting, or Teleworking, in the large. This missive is actually an extended response to two well-thought-out posts from a couple of folks I respect.
I will not steal from you the opportunity to read Jeremy’s post and Jim’s post. Go read them, for they provide the context behind this entry; I’ll wait for you.
I may ramble; I may not. But the journey should be fun. Enjoy!
I believe both approaches have merit and may even be complimentary. However I feel both approaches have a different set of motivations and goals which it seeks to achieve.
In my short, illustrious career of some 17 years I’ve been involved in several different types of employments: full-time employee, contractor, but all in an organization I did create or have influence over. Over this time I developed likes and dislikes; we all do. And when I seriously started thinking of working for myself, my old prejudices came to light, shaping the kind of organization I wanted to grow.
I believe both posts come from a position of the ideal organization they would like to have, based on the experiences both gentlemen have accumulated over their careers, and, dare I say, their lives. Like was mentioned in a comment: “top-down” vs. “bottom-up”. But I think there’s more to it. I will not pretend to speak for Jeremy or Jim.
I recognized early on that I would not have employees, that Juicy Parts Software would be a one-man show. As with everything, there are pluses and minuses to this approach. This approach allows me to focus on the relationship aspect of the project. But it does limit the kind of services I can provide, on the surface. Because I value the relationship above the technology I value a large and diverse network of professionals. There is where my approach, I believe, more closely aligns with Jeremy’s post. Working with people with whom I’ve built a relationship is like an ongoing interview process wherein I don’t have to have employees.
However I also recognize the allure of Jim’s post. As with the aspect of employees, I knew I didn’t really want to be involved with the business part of my business (I quickly outgrew that position, though), wanting to focus on what I’m good at: building resilient software solutions. Being able to offload all the icky bits of business is attractive to me. But, I don’t believe I would partake in Jim’s approach for personal reasons: I need to know AND trust the people I task with running my business. The one thing I’ve learned over the years: everyone has different motivations. Even if everyone really likes a CPA or a Lawyer, there’s no guarantee I’m going to like them. In that respects I find Jim’s approach no different from the typical corporation. And though it would seem ownership is the differentiator, I posit: that won’t scale. Maybe it doesn’t have to, but if it doesn’t you lose economies of scale when it comes to negotiating rates and what not.
I readily admit that I’m not a business guru; that’s why I try to listen to everyone around me that have successful businesses. But for me co-working is a chance to work with people whom I enjoy being around without any pretense of trying to build a larger organization above the community of which we’re a part.
Cheers!
This year I’m planning on attending a couple of conferences. I missed everything last year but what better conference to start the year of than one in my backyard.
I’ve heard nothing but good things about RubyNation and, this year, I’ll be there. They’re offering a great conference: Speakers and Agenda.
It’s nearly sold-out so you should stop reading and register: http://www.rubynation.org/registration
I’ve just started looking into Google Maps integration and I settled on those two plugins. I also noticed you have to set the Geocoders key, based on your environment.
I just knew there had to be a way to get to the keys in gmaps_api_key.yml (this file is used by the YM4R plugin) because I didn’t want to copy/paste the values into environemnt.rb and I didn’t want multiple definitions in each evnrionment’s file, and this is Ruby!
So I’m going to try this method: one line in environment.rbGeoKit::Geocoders::google = Ym4r::GmPlugin::ApiKey.get
Cheers!
I have occasion to build Ruby applications for Windows. And it seems like I have to modify rubyscript2exe on each machine. Here are my changes (these are made directly to the gem files):
Before: gemdir= File.expand_path(“..”, File.dirname(FILE)) realstuff= File.expand_path(“realstuff.rb”, gemdir) isapplication= File.basename(File.dirname(FILE)) == “bin” $0.replace(realstuff)if isapplication load(realstuff)After: gemdir= File.expand_path(“..”, File.dirname(FILE)) realstuff= File.expand_path(“realstuff.rb”, gemdir) isapplication= File.basename(File.dirname(FILE)) == “bin” $0 = realstuff alias $__0 $0 alias $0 $0 $0.replace(realstuff)if isapplication load(realstuff)
For me this starts on line 620:Before: if FILE == $0 $0.replace(File.expand_path(“./init.rb”)) TAR2RUBYSCRIPT= trueunless defined?(TAR2RUBYSCRIPT)After: if FILE == $0 $0 = File.expand_path(“./init.rb”) alias $__0 $0 alias $0 $0 TAR2RUBYSCRIPT= trueunless defined?(TAR2RUBYSCRIPT)
Again: This works for me. YMMV!
Cheers!
I can’t believe May was the last time I blogged. Well, yeah, I can believe it. Over the past several months I’ve been trying to focus on staying gainfully employed. So Far, So Good. I will let you know that as now (and since June) I’m 100% Rails. I’m so stoked. But I’m also over committed. I would venture a natural reaction for a young freelancer motivated to keep the food on the table for his family.
I think the main reason my blogging has almost become nil is that I’m not sure what I want to use this blog for. I’m on Twitter. I run the CVREG. I just don’t know what to do this blog. I had ideas. But I don’t have the enthusiasm and energy right now - I’ve been focusing those on the projects I’m either running or helping with; maybe I’ll talk about my projects (at a high-level since I’m under NDA for some).
Maybe.
Until then…Cheers