On my fresh Ubuntu 11.04 box running Ruby 1.9.2 instead of the standard Ruby 1.8, I ran into some undocumented errors while installing the mysql2 gem. Here’s what I was seeing:

$ gem install mysql2
Building native extensions.  This could take a while...
ERROR:  Error installing mysql2:
	ERROR: Failed to build gem native extension.

        /usr/bin/ruby1.9.1 extconf.rb
          <internal:lib/rubygems/custom_require>:29:in `require':
          no such file to load -- mkmf (LoadError)
	from <internal:lib/rubygems/custom_require>:29:in `require'
	from extconf.rb:2:in `<main>'

Gem files will remain installed in
  /usr/lib/ruby/gems/1.9.1/gems/mysql2-0.3.2 for inspection.
Results logged to
  /usr/lib/ruby/gems/1.9.1/gems/mysql2-0.3.2/ext/mysql2/gem_make.out

This obviously isn’t all that helpful, nor did I find anything all that useful on Google – thankfully the issue is easy to solve. All that’s needed is to ensure that the following packages are installed:

sudo apt-get install libmysqlclient-dev libmysql-ruby1.9 ruby1.9.1-dev

Then you can try installing the gem, it should work, hopefully

As a tip for all my Facebook friends, despite the promises you see spreading wildly across Facebook, you can’t see who’s looking at your profile. If you ever see anything like this, it’s a scam – pure and simple:

If you ever see a page like this, or one that asks you to paste a script into your address bar as this one does, please immediately report the page. If you see any of your friends ‘like’ a page like this or send messages linking to something like this, please warn them – they have likely handed their account over to a scammer or other bottom-dwelling script-kiddy.

If you were unfortunate enough to get a message from a friend and believe what it said; your account is in somebody else’s hands and is being used to spam your friends with a message recommending the same scam to them. Odds are, your account will later be sold to others for spamming – Facebook accounts are sold thousands at a time, and last I saw they go for about $3 each, sometimes more if a person has enough friends.

The best thing you can do if this happens to you is change your password, check the email address and other information listed on your account, then check all of your permissions, including what applications have access to your account. These people move fast, and they can sell accounts several times over, so don’t assume once you change your password all will be good – they’ve probably changed your email address or opened some other means to take your account back so they can keep making money from it.

Be careful and be paranoid, there really are people out to get you.

Tagged with:
 

While looking at the reactions to Microsoft’s acquisition of Skype, I found one tweet that really stood out:

How you know you have a PR problem: As soon as you buy popular service X, their userbase starts posting alternatives #skype#Microsoft
May 11 via Twitter for MacFavoriteRetweetReply

While many users are busy joking about names (personally my money is on “Microsoft Live Skype” – my only hope is that there isn’t an “Ultimate Edition” or “Unicorn Edition” tacked to the end of the name) Microsoft has a significant problem, and I really hope they are looking at public reaction. Users are concerned; what will Microsoft do to the brand, and how will the brand and service change – users need to be reassured that what they love about the service won’t go away.

I use Skype on a daily basis, and for me this brings back memories of AOL’s failed acquisition of Nullsoft (the maker of WinAmp) in 1999, which took a great piece of software and a well-respected brand, and rendered it little better than RealPlayer (and don’t get me started on the Netscape acquisition). I can see this easily going down the same path; as the brand is diluted and merged with others to help boost their marketing goals, and the software is integrated tightly with other products (creating that tight, but invasive feel that the EU had so many issue with when they did it with IE); they could easily find themselves in the same position that eBay did back in 2007.

Microsoft desperately needs to build their online brand to recover the billions that they are losing, and I have to assume they see Skype as a key player in this quest; the question is can the keep their newly acquired user-base from jumping ship.

I don’t think Skype will live or die on technology at this point, I think PR is a far larger issue for them right now.

Tagged with:
 

For those outside of the IT field, developers are looked at as miracle workers – through us, business leaders think anything is possible (and they often see no reason why we can’t work our latest miracle by the next morning). In reality though, we do work miracles; we save companies vast amounts of money every year through increased worker efficiency and automation, we enable new lines of business that wouldn’t be possible otherwise, and reduce energy costs because we keep the office lights turned off. Well, that’s more or less how they see us.

But for all of the wonders we are responsible for, there is one thing we can’t do (no matter what amazing powers some executives think we have to make them look better or earn them more bonuses):

You can’t fix stupid.

I’ve often described development as being a professional problem solver, and we are often tasked with rather challenging problems to solve. Sometimes the problems are purely technical – making something new possible that previously was impracticable or even impossible, sometimes it’s all about efficiency, other times it’s about image and controlling how people see a company. When the problem is the user though, you know you’re in for a rough day.

I was recently given such a task – the users weren’t listening to their supervisors and they wanted the software to force these users to do whatever it was that management told them they should be doing. I was given less than a week to find ways to make people that don’t want to work, work.

Basically, users fall into three simple categories:

  • Power Users – these users understand software, and require little, if any instruction – more than anything, you give these users a tool and stay out of their way.
  • Average Users – odds are, your mother or father falls into this category. They understand enough to get by, and with a little instruction they should have no trouble.
  • Idiots* – odds are, you work with one of these users. You lead them by they hand, and show them exactly what to do – just in time for the boss to walk by and praise them for doing a good job (and 10 minutes later you find them playing in traffic, somehow defying Darwin in the process).

For users of the last category, there’s just not much you can do.

I always do my due diligence while building software; doing all I can to make it simple to use, flexible, and forgiving of user error. I always use extensive data validation, carefully worded instructions and dialogs, and do my best to follow the various best-practice guides for UI and UX; yet for all this effort and design – I can’t write software that thinks for people or makes judgement calls based on business rules that only they know (probably because they make it up as they go).

No matter how helpful or intelligent an application is, or how idiot-proof you think you’ve made it, reality is that you simply can’t fix stupid – you can’t take an incompetent person that refuses to think for themselves and turn them to into a great, productive asset. After years in this industry (which has made me just a little cynical [in the way that Sol only seems little when compared to Betelgeuse]), I’ve come to understand something rather disturbing: idiots keep getting better.

Somewhere, right now, idiots are working to build even better idiots – and that’s a really scary thought.

We can make a user more efficient by automating tasks, providing better information, or helping to manage their workload – what we can’t do is make them smarter, make them think through their actions, or force them to do what their managers tell them. Yet we are, at least on occasion, asked to fix this problem. 

Despite our best efforts as professionals and passionate developers; if a user won’t think – we just can’t fix it.

 

* – I define an idiot about the same way I do someone that’s lazy; they have no medical issues or legitimate handicap. They just don’t want to think or work (probably both). Those that are handicap or have learning or medical issues are a very different story and not the target of this article; I donated time and services to charities that served the disabled for a number of years, I highly recommend that all developers do it – it’s a very rewarding experience to see your work make somebody’s life better and it teaches you quite a bit about how people interact with technology.

I’m in the process of migrating my sites from  a Dreamhost VPS, to fully managed hosting by Gray Hills Software. In my tests so far, the loading time has been cut in half with this switch. Pages load faster, the server is better configured (new software, and more options), and seeing as they have both Windows and Linux servers, I can use one provider with whatever technology suits me and my projects.

There may be a few bumps as I move things, but all should stable soon.

Tagged with:
 

Ralph Langner recently spoke at TED about his team’s findings on Stuxnet; it’s a clear (and somewhat scary) insight into the wars of the future. Instead of sending fighters and bombers to take out Iran’s nuclear program, as was done in 1981 to eliminate Iraq’s program, a carefully crafted virus slowly and methodologically damaged or destroyed vital equipment.

How long until this is used as a standard part of ‘softening’ a target by taking out key infrastructure (flight systems, power plants, telephone & internet, etc.) before the bombs start to fly?

For those of us that have a professional interest in security, understanding the threats both present and future is simply a necessity.

This is a must watch.

Update: If you want to dig into some technical detail, Mark Russinovich has a good write-up on it.

Tagged with: