Faking out a Mac trackpad

So a couple of weeks ago I bought myself a new Ultrabook - a Lenovo IdeaPad U310. I've been used to using a MacBook Pro for work and I wanted something with a similar form-factor, but that didn't cost $1300, have an unnecessarily weird keyboard, and run OSX. The IdeaPaf U310 was fairly cheap and seemed like it would fit the bill.

For the most part, I'm pretty happy with it so far. I even like Windows 8.1 well enough (after installing Classic Start Menu, that is). There are only two parts that I'm not crazy about:

  1. The viewing angle of the screen is pretty limited.
  2. The trackpad is harder to use than on a Mac.

While there's obviously not much to be done about the first complaint, I figured the second one could be remedied in software.

Background

Now, the actual problem here is not with the physical trackpad - that works well enough. It's with the click handling. If you're not familiar with a MacBook trackpad, it has no "buttons" as you customarily see on PC trackpads. Rather, you can just press down (as opposed to "tapping") on the trackpad with one finger to "click" - the pad actually gets depressed a bit and makes an audible clicking sound. To do a right-click (or command-click in Mac speak), you just press down with two fingers. It's a little unintuitive at first, but you get used to it and it works pretty well.

The Lenovo IdeaPad, however, doesn't quite do that. It still uses the same "press to click" mechanism, and you can still press with two fingers to double-click. However, it also has two "virtual buttons" at the bottom of the track pad. There's just a small vertical line, about half an inch long, at the bottom-center of the track pad that. You press on the left of that line to left-click and on the right of it to right-click. Even simpler than the Mac. And, in fact, when using a Mac I'd often wished it had something like that.

Problem is, that doesn't actually work out so well all the time. Because there's no tactile feedback as to whether your finger is over the left-click or right click button, it's very easy to accidentally click the wrong one. This is especially the case if you're using the laptop on your lap and so end up with your hand coming at the trackpad from one side.

The Fix

So my solution to this was to try and change the behavior to work like a Mac - that is, make both virtual buttons left-click and use two fingers to right-click. Seems simple enough, but the Synaptics trackpad software that came with the laptop - which is actually quite good and contains a surprising number of options - doesn't support that. The only option it has for the primary buttons is to swap them, which doesn't help.

However, I did find a solution that uses Synaptics in conjunction with X-Mouse Button Control, a little third-party freeware app that lets you remap mouse buttons if various sophisticated ways.

  1. In the Synaptics settings, I configured the "Two-Finger Click" action to "Middle Click". (It doesn't have to be "Middle Click" in particular, just something other than right-click that X-Mouse can recognize.)
  2. I installed X-Mouse and configured it to set the "Right Button" action to "Left Click" and the "Middle Button" action to "Right Click".

So far this configuration is working pretty well. It's not ideal perfect - two-finger clicking on the left-click button doesn't trigger a right click. However, it does prevent those accidental right-clicks, which is what was really bothering me.

Opera 15 is out - I'm switching to Chrome

Well, the new version of Opera is now in stable release - Opera 15! This is the first version based on Webkit instead of Presto, Opera's in-house rendering engine. After using it for a week or so on OSX, I have to say that I'm both pleased and disappointed.

I'm pleased because, let's face it, Webkit is pretty great. Especially if you're a web developer. It's fast, supports most of the emerging standards, and has really great development tools. And while I've been an Opera fan for a while, the old JavaScript and HTML rendering engines have been showing their age for some time. They're slow by comparison to Webkit-based browsers and have a lot of quirks. So I'm very happy that I can now go to Sta.sh in Opera 15 and actually use it - in Opera 12 it's almost unusably slow.

I'm also pleased about the appearance. The new Opera is definitely pretty. The old version wasn't bad, but you can tell that they've had designers putting some time in on the new version. It looks very smooth and polished.The new Opera Discover feature

I'm less pleased about everything else. You see, Opera 15 introduces some fairly major UI changes. And by "major UI changes", I mean they've basically scrapped the old UI and started over from scratch. Many of the familiar UI elements have been removed. Here's a quick run-down of the ones I noticed:

  • The status bar is gone.
  • Ditto for the side panel.
  • The bookmark bar is also gone.
  • In fact, bookmarks are gone altogether.
  • Opera Mail has been moved to a separate application (not that I miss it).
  • The RSS reader has disappeared (maybe it went with Opera Mail).
  • Opera Unite is MIA.
  • Tab stacking has disappeared.
  • Page preview in tabs and on tab-hover are gone.
  • Numeric shortcuts for Speed Dial items have been removed (i.e. they took away what made it "Speed Dial" in the first palce).
  • The content blocker is gone (which is just as well - it was kind of half-baked anyway).


And that's just the things I noticed. But the worst part is that those UI features were the only reason I still used Opera. I feel like I'm no longer welcome in Opera land. They've literally removed everything from the browser that I cared about.

And what have they given me in return? Well, Webkit, which is no small thing. But if that's all I wanted, I'd just use Chrome or Safari. It's nice, but it doesn't distinguish Opera from the competition.

So what else is there? Well, Speed Dial has gotten a facelift. In fact, Speed Dial has sort of turned into the Opera 15 version of bookmarks. You can now create folders full of items in your Speed Dial and there's a tool to import your old bookmarks as Speed Dial items. I guess that's nice, but I'm not seeing where the "speed" comes in. It seems like they've just changed bookmarks to take up more screen real estate and be more cumbersome to browse through.

They've also introduced something called Stash, which, as far as I can tell, is also just another version of bookmarks. But instead of tile previews like Speed Dial, it uses really big previews and stacks them vertically. They're billing it as a "read later" feature, but as far as I can tell it's functionally equivalent to a dedicated bookmark folder. I guess that's nice, but I don't really get the point.

And, last and least, there's the new Discover feature. This is basically a whole listing of news items, right in your browser. Yeah, 'cause there aren't already 42,000 tools or services that do that. One that's directly integrated into the browser is just the killer feature to capture the key demographic of people who like to read random news stories and are too stupid to use one of the gajillion other established ways of getting them. Brilliant play, Opera!

Now, I'll grant you - visually, the new Speed Dial, Stash, and even Discover look fantastic. They're very pretty and make for really nice screenshots. However, I just don't see the point. I can imagine some people liking them, but they're just not new or innovative - they've just re-invented the wheel in a way that's more convoluted, but not visibly better.Opera's new Stash feature

Overall, I get the feeling that Opera 15 was designed by a graphic designer. Not a UI designer, but a graphic designer. In other words, it was built to be pretty rather than functional. I know I've sometimes had that experience when working with a graphic designer to create a UI - you get mock-ups that look beautiful, but were clearly created with little or no thought to their actual functionality. So you end up with workflows that don't make much sense, or new UI elements with undefined behavior, or some little control that's just "thrown in" but represents new behavior that is non-trivial to implement.

Honestly, at this point I think it's just time to switch to Chrome. I already use it for all my development work anyway, so I might as well use it for my personal stuff too. I had a good run with Opera, but I just don't think the new version is going to meet my needs. Maybe I'll take another look when version 16 comes out.

Site redesign

This weekend I did something I've been meaning to do for a while: I redesigned my website. In fact, unless you're reading this in your RSS aggregator, you probably already noticed. It was about time, too - I'd had the same fractured, dated design for years. There are probably still some kinks to work out, but for the most part I think it looks much cleaner.

This time I decided to do a real site design. As in, not only did I update this blog, but also the other sections of this site and the landing page as well. In fact, this started as a re-do of my landing page and I ended up abstracting that design out and making it a theme for LnBlog. Then I just set this and my other LnBlog blogs (you know, the ones in the header that nobody reads) to use it. Update accomplished!

I figured that, what with being an experienced front-end web developer, it would probably be a good idea to make my site look decent. Lends to the credibility and all. The randomly differing styles of the old pages looked kinda crappy and the sharp edges,weird colors, and embellishments were not so great. Of course, I'm no graphic designer, but I think this looks a bit cleaner. And at the very least, it's consistent.

Changing bug trackers

This past week I finally decided to migrate to a new bug tracking system for my personal projects. Granted, my projects aren't particularly big (in most cases, I'm probably the only user), so it's not like I'm flooded with bug reports. But in my last two jobs I lived and died by our ticket tracking system and found the use of a good bug tracker to be extremely helpful for my development process.

For the last few years, I've been using Mantis BT for my personal bug tracking needs. Mantis is actually a very capable bug tracker and worked fairly well for my needs. However, Mantis is just a bug tracker. It doesn't have a wiki or much in the way of project planning tools, release management, or anything else, really. It has some basic roadmapping features and a changelog generator, but that's about it. And since I've become used to working with the likes of Jira, Trac, and Phabricator, I've come to want a little more than that.

On a side-note, the other thing about Mantis is that it's a bit cumbersome to work with. The UI is a bit...antiquated, for one thing. In fact, I've heard people refer to it as a disaster. There's a reason that the Mantis site only shows screenshots of the mobile app, as seen from the issue reporting screen below. The workflow is also a little weird when it comes to things like the changelog and roadmap features. It centers on fixed-in and target versions for individual bugs, which presupposes a more organized type of release planning than I'm looking to do.
Mantis "report issue" screen

So if not Mantis, what to do for an issue tracker? Obviously, the simple answer would be to install one of the popular project management packages, like Trac or Redmine. However, there are a couple of problems with this:

  1. I run this site on a shared hosting account. A really cheap shared hosting account.
  2. I'm kinda lazy.

To expand on the "cheap" part, my hosting provider is really targeted more at simple PHP-based sites that are administered through their control panel. So not only do I not have root access to the server, I don't even have shell access - just the control panel and FTP. So anything that requires running interactive commands for setup is out. And while my host does "support" Ruby and Python, in the sense that the interpreters are installed and accessible, it only does so through CGI and has a rather limited set of libraries installed.

This all leads into the second point, i.e. laziness. I could just get a more full-featured hosting provider. However, I've been happy enough with my current one, they're very affordable ($6/month), and frankly, I can't be bothered to go to the effort of moving all my stuff to a new server. I also can't be bothered to figure out the non-trivial steps to set up a semi-supported package like Trac or Redmine on my current host. It just isn't worth the time and energy to me.

So I decided to do a little more research. After some Googling, I ended up settling on The Bug Genie. So far, it seems to be a pretty decent compromise between Mantis and something like Trac. In addition to ticket tracking, it has an integrated wiki module, release and milestone tracking features, and even source control integration.
bug-genie.png

The initial setup was not as intuitive as I might have hoped. For starters, there was no easy way to migrate my data from Mantis to The Bug Genie. I ended up just migrating the issues themselves, minus comments, by using Mantis's CSV export. A highly sub-optimal solution, to say the least, but it wasn't important enough to me to make a project out of the migration. Second, the permission and user system, while it seems pretty powerful, is a bit more complicated and granular than I need. Lastly, the source control integration was a bit of a pain to set up. The actual configuration wasn't that difficult once I figured out what I needed to do, but I had to go to the project team blog to find the documentation I needed. Honestly, the worst part was the particular format of commit message needed to trigger the integration - it's quite verbose and not at all intuitive.

It's only been about a month of fairly light use, but so far I'm pretty satisfied with The Bug Genie. The UI has its quriks, but is modern and easy to use. It's pretty configurable and well documented, allowing you to customize project pages using the wiki module. Things like the release tracking and VCS integration are nice touches and seem to work quite well. All in all, it pretty much does what I wanted and does it reasonably well. I'm pretty happy with it.

Better IE testing

It seems that Microsoft has decided to be a bit nicer about testing old versions of Internet Explorer. I just found out about modern.IE, which is an official Microsoft site with various tools for testing your web pages in IE.

The really nice thing about this is that they now provide virtual machines for multiple platforms. That means that you can now get your IE VM as a VMware image, or a VirtualBox image, or one of a few other options.

When I was using Microsoft's IE testing VMs a couple of years ago, they were only offered in one format - Virtual PC. Sure, if you were running Windows and using Virtual PC, that was great. For everyone else, it was anywhere from a pain in the butt to completely useless. This is a much better arrangement and a welcome change. Nice work, Microsoft!