Christmas Is About Giving

Posted December 7, 2011 under General

A few days ago I was asked what I wanted for Christmas. As always, I said I couldn’t think of anything.

I mean, after all, I have an apartment, a car, a job, plenty of food, several computers, and a TV. What more could I really need? I’ve got more than enough to live on, and really there is nothing for me to complain about. I don’t want anything because there is nothing I need.

For other people, I’m afraid that’s not the case. Among the few basic needs humans have, water is one of them. And there are lots of people in this world who don’t have access to fresh water.

Instead of getting things I don’t really need, like some new video game, I’d rather see the money spent on something that matters.

The Occupy Wall Street protestors believe they deserve everything. That they are entitled. But you know what? None of them have had to walk 3 hours a day to get fresh water. And neither have I. But instead of complaining about rich people being richer than me, I try to be thankful for what I have. I try to be thankful I have fresh water. I try to be thankful for having everything I need to live and more. It’s easy to forget how easy our lives really are.

So if you’re thankful and you’re in the giving mood this season, consider donating to my Charity Water campaign or start your own. A new TV may improve your life a little, and you may deserve it, but a well for fresh water will completely change a child’s life.

Water Changes Everything. from charity: water on Vimeo.

Let’s get back to giving. After seeing all the people in the Occupy WallStreet movement who believe they’re entitled to things without working hard, I think it’s time for a change. All it takes is $20 to give someone clean water. $20 to change someone’s life. They deserve it, and they will appreciate it more than you can imagine.

Donate

Make Christmas about giving again. Please donate.


On Being Interesting

Posted December 6, 2011 under General

Russell Davies’ excellent post the other day challenged people to be more interesting. This something I think a lot of people need to read.

We are the Myspace, the Facebook, and the Twitter generation. We are so called “social” people. What do we do? We post things about ourselves on these networks to share with others. These services are filled with people primarily posting about themselves. They’re not sharing. They’re bragging and trying to feel important.

Those people with thousands of followers? They don’t post about themselves as often. They share interesting articles, images, and videos. And not only that, they start conversations about them.

We all like to talk about ourselves to some extent. It’s human nature. We can’t help it.

But being interesting isn’t that hard. Just be able to converse about lots of topics without talking about yourself.

What we could do better though is to create value. Create conversations, write about things you normally wouldn’t, share content. Write responses about movies you’ve seen, images you’ve found, articles you’ve read.

Being able to converse on any topic will allow you to network better, build better friendships, connect with more customers, and generally improve your life.

Get other people’s opinions on things, learn something from them. Be curious. Be interesting.


Simplicity Is Definitely Complicated

Posted December 5, 2011 under General

“Simplicty.” It’s a word we hear often, but it’s meaning is fleeting to most.

This post explores “simplicty” in phones. We have rotary phones that are simple by limiting the uses it has (Limited Simplicity). We have business style phones with lots of buttons and shortcuts that add simplicity for power users (Power User Simplicity). And we have what he calls “elegant design” where the iPhone’s use cases are maximized by using sets of smaller tools to fulfill more use cases (Elegant Simplicty).

The thing about this description of “simplicity” is that it doesn’t mean the same to different people. Personally, I see the iPhone as Limited simplicity. My parents see it with Elegant simplicity or Power User simplicity. And my grandparents don’t think it’s simple at all. In fact, my grandparents are scared to touch it at all. Business owners and employees will find the business style phone with it’s 100 buttons elegantly simple because of how they use it, nobody else will feel the same.

Rarely will simplicity take upon the same meaning to everyone, so simplicity is even more complex than that.

The most important experience you can do is find the target market that you want to achieve elegant simplicity with. These are the customers to focus on and you want to “wow” them. Don’t think you need to be a catch all, be specific.


Rails Tip #2: Include CSRF Token With Every AJAX Request

Posted December 2, 2011 under General

With Rails 3.1, and many other jQuery based apps you might end up doing some juggling with the CSRF token in your AJAX requests. You won’t always be submitting a form that includes the CSRF field, so this tip will include the CSRF token every request so you don’t have to worry about it.

First we want to make sure the CSRF token is stored in a meta tag inside the HTML head like so:

<%= csrf_meta_tag %>

Next, we configure jQuery to always include the token in our requests:

$(document).ajaxSend(function(e, xhr, options) {
  var token = $("meta[name='csrf-token']").attr("content");
  xhr.setRequestHeader("X-CSRF-Token", token);
});

You can place this snippet of javascript anywhere, however I’d suggest keeping things clean and putting it inside your external javascript files.

Source:
http://weblog.rubyonrails.org/2011/2/8/csrf-protection-bypass-in-ruby-on-rails


Change Should Be Progressive

Posted December 1, 2011 under General

A common problem building a company or project is determining what to build. You have an idea of what to build, potential or existing customers have an idea what they want. But which things should you really be building? Maybe it’s something else entirely.

Drastic Changes Are Bad

The article No Project Is More Important Than Its Users caught my attention the other day. Especially this quote:

“If you want to understand the importance of not suddenly changing your users’ experience. I would go and take a look at GNOME 3.0.” – Alan Cox

If you’re a linux user you might already be familiar with the situation: Gnome has been a desktop environment on the Linux desktop for years. It’s had a standard interface that has been around for ages and many people are comfortable with it.

With every project, there are a steady stream of complaints about Gnome. That’s fine, at any level of popularity you’ll have this. The thing the Gnome developers overlooked was that while there were complaints, nobody had been frustrated enough to move to another software package. Ubuntu was still using it and many other distros. The complaints were shallow.

The Gnome developers began working on Gnome 3 (http://www.gnome.org/gnome-3/) which drastically changed the way Gnome worked. The concepts and implementation may be great, but not very many people may know. Annoucing Gnome 3′s changes alientated a lot of users. Instead of getting progressive enhancements to something we were already comfortable with, we got something completely new.

It sounds cool conceptually, but I know how to use Gnome 2. I have my way of doing things and so does everyone else currently using it. I felt alienated and still have never tried Gnome 3. Ubuntu even went as far as developing their own desktop environment in competition.

They knew there was a paradigm shift as the market has went from netbooks, to tablets, and back to ultra thin netbook-like laptops. What they failed to do is move progressively with the market shift.

Users Don’t Want To Be Forced To Use Something New

Facebook’s redesigns have been known to cause issues with the userbase. The first couple rollouts got massive outcries, but then they changed the way they roll out features.

While I haven’t been on Facebook for quite a while, I remember the rollout of a new interface while I was still a user. It was simple. Notify the user there is a new UI that is opt-in.

Why opt-in? Because it instantly makes you the cool kid in your group of friends. You’re unique, you’ve got the new UI and they don’t. It’s as simple as that.

Instead of forcing upon changes, make it enticing. Users won’t be able to upgrade fast enough, and you can deprecate old features later. That gives you plenty of time to fix problems in the new version without disrupting user happiness. They feel special using the new version and respect that it may still have a few bugs instead of complaining about them.

Users Don’t Know What They Want

Yes, simply put, they don’t. But you probably don’t either.

“If I had asked people what they wanted, they would have said faster horses.” ― Henry Ford

Listen to user feedback, and don’t change things too fast. If you’re making a whole new version of your product with a different flow, then don’t replace the old version with it. Give it a new name. Henry Ford didn’t call his invention Horse 2.0. Let users know that this is different, don’t pull the rug out from underneath them. They are the reason you exist, so respect them.

Conclusion

Users are important. Listen to them, and iterate with them. Let them have a say in what gets done, but certainly don’t always do what they say. Keep track of the number of users asking for features, and make sure they are in line with the user experience you wish to achieve. Don’t think you know everything, you’re the one behind the curtain.

You can’t possibly have the same experience a new user has. It’s your job to figure out how good of an experience they have. And then make it better.


Rails Tip #1: Clean Configuration Values

Posted November 30, 2011 under General

Rails Configuration Values

Source: http://blog.carbonfive.com/2011/11/23/configuration-for-rails-the-right-way/

First, we define a default value for all environments in config/application.rb:

module Configurator
  class Application < Rails::Application
    # By default, let OSX resolve the path to the binary
    config.wkhtmltopdf = "wkhtmltopdf"
  end
end

Then we override the default setting as necessary in config/environments/:

Configurator::Application.configure do
  # Settings specified here will take precedence over those in config/application.rb
 
  # Point Heroku explicitly to the binary we need to use
  config.wkhtmltopdf = "#{Rails.root}/bin/wkhtmltopdf"
end

Lastly, we access the configuration element in our code:

cmd = [Configurator::Application.config.wkhtmltopdf, url, tmpfile.path]

Yes, that’s it. Just use Rails’s environment support and config to store your own configuration.


Rails Tips Series

Posted November 29, 2011 under General

I’ve been doing Rails fulltime for a while. Throughout all those hours, I’ve come across a lot of interesting situations and tips from around the web. Some have been best practices, some have been interesting solutions to problems.

With the plethora of content out there, I’ve decided to start keeping track of these snippets in a new series of blog posts that I will be calling Rails Tips. None of these tips will be breathtaking, but it might prove to be useful down the road. Each of the features will be individual blog posts, and I’ll be aggregating them onto the Rails Tips page here on my blog as well.

Let me know if you have any suggestions for topics to cover!


Looking For A Keryx Maintainer (Python)

Posted November 28, 2011 under General

It’s been a long road. I started Keryx over 4 years ago to learn Python, help dialup users, and give back to the Ubuntu community. While I learned a ton and met a lot of great people throughout the time, all good things come to an end sometime. I’d like to give a huge thank you to everyone who has helped me and motivated me to get Keryx this far. It wouldn’t be here without you!

A little background on Keryx: This project started my 8th grade year while I was learning Ubuntu on a dialup connection. It wasn’t easy to install packages, so I thought it be nice to have a portable application to download them from the Windows computers at school. I build Keryx then, a Python script capable of downloading the package lists, looking up dependencies, and figuring out exactly which packages you need to download. Since then, it’s grown a lot, seeing users in all over Africa, Asia, and rural places in the United States.

I haven’t been able to put the effort into Keryx as I would have liked. So instead of Keryx ending up in the “old and outdated” folder, I’d like to reach out and see if anyone would like to maintain it for me.

Keryx is currently sitting at over 80,000 downloads and doesn’t need much in the realm of bugfixes. There isn’t much to maintain, just looking for someone interested in Python.

If you know anyone who is interested, have them get a hold of me. I’m planning on finishing up the latest version and then calling it quits at the end of this year.


Happy Thanksgiving

Posted November 24, 2011 under General

I want to wish everyone a Happy Thanksgiving! I’m incredibly greatful for all the great people I’ve met this past year. It’s been an amazing experience and my only hope is that I can improve other people’s lives as much as they have improved mine.

It’s not often we take time to say thanks for everything we’ve got. Even on Thanksgiving. We have computers, fast internet, plenty of food, shelter, a cars. Be thankful not just today, but everday. (I’m looking at you occupiers, you’ve got way more than a lot of people.)

Take a few minutes to think about what you take for granted on a daily basis. Tell your family you love them. Say thanks to people at the grocery store or restaurant. Share the love.

Don’t eat too much!


iChat Won’t Become Available and No Buddies Show Up

Posted November 21, 2011 under General

We use iChat a lot here at work. It’s nice for screen sharing and audio/video chat. The problem with it is that sometimes you’ll sign on and it just won’t work. You either can’t set your status to available or you don’t have any buddies listed. It’s annoying to say the least.

The solution for this is to open up Activity Monitor and quit the imagent process like so:

Activity Monitor

Then you should be able to restart iChat and be good to go. This seems to stem from sleeping OSX often. So maybe you should just do a full shutdown at the end of the work day once in a while. :P


« Older | Newer »