Showing posts with label windows 7. Show all posts
Showing posts with label windows 7. Show all posts

Key remapping (or how I learned to stop worrying and love the home/end keys)

So the page up and page down keys on my laptop (see my review on the T430s) are next to the directional arrows. This was driving me insane, as I would accidentally hit them and then my view would jump to kingdom come. Thankfully you can remap keys in Linux, and I found autohotkey for Windows. Such a lifesaver. I remapped pgup/pgdn to home and end. That's when I discovered...

How did I not know about HOME and END until now!?!?!

These are fantastic keys, especially since I'm so used to vi/m in Linux, and jumping to the beginning / end of lines to do inserts. It is super-useful to have these keys in Windows. I absolutely love the keyboard layout with the remapping now.

Lenovo T430s Review

Disclaimer: This is not a particularly serious or comprehensive review. Rather, it is a collection of my usage notes than anything else. Also, I'm not being paid by Lenovo to say any of this.

A little background and perspective on where I'm coming from.
My last laptop was a Lenovo T60 bought circa 2007, and manufactured around 2006 (I purchased it refurbished). It came with Windows XP, and I drove it into the ground. About a year ago, XP finally gave up the ghost, and instead of doing a clean XP re-install I loaded it with Ubuntu. It functioned fine for a few months and then the power inverter to the display gave out. This seems to be a common problem. While I'll probably get around to fixing this (and yes, a post will be in order on that), the T60 is now serving as an office desktop, and I decided that it would be a good idea to upgrade to a new laptop.

After looking at the current models of Lenovo laptops, I settled on the T430s - good specs and lightweight. I ended up getting another refurbished model from their outlet. Here are the specs;

Windows 7 Home Premium
CPU: Intel Core i5-3210M @ 2.50GHz x64
RAM: 4.00 GB
HDD: 320 GB
Graphics (integrated): Intel HD 4000
Graphics (descrete): NVIDIA NVS 5200M
Display: 1366x768


I'm dual-booting Win7 and Ubuntu using the instructions at LinuxBSDos. Linux installed seamlessly, but be sure to make a windows recovery disk before you do this! I left my recovery partition well enough alone as well. Finally, I had some issues getting the Windows updates to apply (unrelated I think), and fixed it with these instructions.





Usage notes:
  • I was pretty skeptical about the keyboard - I've tried a couple of chicklet style keyboards and haven't been impressed (Apple and Asus - full disclosure, I'm not much of an Apple fan-boy, but neither do I have a bone to pick with them). The reviews were pretty positive about this one (although less so on the e-series, so be warned), so I thought I would give it a chance. The keys have enough travel, are well separated, and the mechanism behind each key is solid. I thought the curved shape to the top was mainly bogus, but my hand does feel much more centered on the home row than with the flat Apple keys. I ocassonally use the home/end/pgup/pgdown group, but am not bothered by their separation on the keyboard. After getting used to ViM, I really want to use this keyboard for complete computer navigation. It lives up to the hype.

  • I'm less positive about the widescreen (although it's rare to get a laptop without this anymore). Personally, I feel as though it makes me hunch over more, since the center of mass of the screen is lower. It's not noticable when it's on your lap, but rather when you're using it on a desk.
  • Also, I'm not much of a fan of the trackpad. The T60's trackpad was perfect - I could use it for days without  having my hand hurt. The 430s... well, after using it for most of today, I feel like I'm developing claw-hand. It has some nice two finger scrolling and three finger tap / swipe actions that work well. I'm not entirely sure what the problem I have with them is. I've noticed this with my wife's Lenovo V600 too. At first I thought it had to do with how recessed the trackpad was, however, now I'm thinking that it has to do with how large it is. I usually have my thumb resting on the left mouse button, and in order to keep the other fingers from registering, I have to arc my index finger far away from them, or constantly hold up my middle finger. The trackpoint (red pointer in the keyboard) feels much better, but I can't keep myself away from the trackpad long enough to give it enough time to form an opinion. I'm thinking I'll have to get an external mouse with this one.
    Added: So I've this for about a week now, but wanted to leave my initial impressions up. It still hurts my hand to use the mouse for extended periods of time, but not quite as much. I've gotten much better at the multiple finger gestures and really enjoy using them. I would still recommend an external mouse for the long haul. Also, I've encountered the first, and hopefully only, problem I've had with this refurbished machine - the right trackpad mouse button has died. This isn't that much of a big deal, I can just jump up and use the trackpoint's rmb, but it's not an ideal situation either.
I think the size of the trackpad may be responsible for my 'claw' feelings.
At last, that combined with my propensity to use the left side of the trackpad
(you can make out where my fingers have been on the T60).

  • The battery life seems good. I got about 4.75-5 hrs of word processing with the internet up, and 1.5 hrs of graphics-heavy Mass Effect 3. This brings up a good point - you do have to make sure the power plug is fully seated into the machine - that's how I have the numbers for ME3 - I didn't fully seat the power cable :p.
  • Sounds are great, the speakers are now next to the keyboards and pointing up. They sound rich enough for me, but that's not saying much, I'm not exactly an audiophile.
  • Graphics-wise it does what I've asked of it so far, which is to say the occasional Starcraft II and Mass Effect 3 :p. And runs pretty cool while doing that.
  • Other notes: I would not pick it up from the right (CD tray side) while burning a CD. The tray is a bit thin and it killed a burn I had going from the little bit of case-flex it does have. These are magnesium cases and are supposed to be quite strong, though. Judging from the number of times I've dropped the T60 that sounds about right.
Here are some more comparison photos:

Top view, and front view, the T430s is slimmer in the front
but builds towards the back to about the same thickness.

Thankfully, it has the same matte screen that prevents reflections.



All in all, it seems to be a solid laptop, and I'm really quite looking forward to using it.

Does anyone else have problems with the new Lenovo trackpads? I'd like to know what your solutions are, two handed? Middle finger navigation? Finger exercises? A hack that lets you use the webcam as a mouse?

Home Server - Part IV - Networked Printing

  Okay, so the Unison file sync is taking longer than I expected, but I realized that I could network the printer, so as to have any computer in the house print through the wireless. There were a few hiccups, but it was mostly painless. Here's what I had to do.

Part I - Installing Linux
Part II - Setting up SSH
Part III - Setting up SVN
Part IV - Networked Printing

  First you'll want to install the samba print driver in Ubuntu, instead of using the command line to install this time, I went to the software center, searched for samba, and installed from there. I followed the steps from this Ubuntu community link, but had to make some modifications as I went. It was fairly fast, and I had to modify most every step, so here goes. First off all the setup is Ubuntu server with attached printer (HP Officejet 5500), two Windows 7 boxes, and a Win XP laptop that needed to print to the printer.

  I went to http://localhost:631 from a browser on the Ubuntu box, but this didn't have much information on sharing the printer beyond allowing me to confirm the name. Next up was to open the samba configuration file "sudo vi /etc/samba/smb.conf". Under [printers] (there is something like #printers above it - don't be fooled, keep scrolling), change / add the lines to;
    browsable = yes
    guest ok = yes
    use client driver = yes

The last one is for the XP machine. Now restart samba with;
    sudo restart smbd
    sudo restart nmbd

  For the the Windows client printers, add the network printer by going to; Start -> Printers and Faxes -> Add a printer -> Network printer -> Now enter the local IP address of the machine and then the exact printer name for instance "\\192.168.1.21\officejet-5500-series". It will then give you a warning about installing drivers from the network, but then it will fail to install the driver. Select one close to you model (if you can find the exact model go for it).
  At this point, the Windows 7 machines were printing fine. However the Windows XP box was not. I had to go back into printers and faxes, then right click on the Network Printer -> Properties -> Advanced. If you were not able to select the exact driver when you set up the printer (as I was) this may help. Previously I had already used the printer from the XP machine, and it had correctly installed the driver then. I was able to pull down the menu next to driver and find the correct one. After clicking Apply, Windows prompted me to install the driver again, but (again) they didn't have it, so I canceled out of that dialog, and hit OK to the printer's properties. With the correct driver associated, the printer was printing! As always questions and comments are welcome!

Home Server - Part III - SVN

  Now that we have our linux box running, and we can connect to it from inside and outside the network, let's get to the good stuff - keeping all of our files in sync, and our version tracking the code. This allows us to always roll back if we should make a goof-up.

Part I - Installing Linux
Part II - Setting up SSH
Part III - Setting up SVN

  Some reminders from the previous cases - our example server sits on internal network at 192.168.1.21, our DNS service forwards traffic from the example domain madscientistlair.blogspot.com, and our SSH is configured to use example port 1986. We've so far been able to use PuTTY to connect.

  First off, we want to create a directory the non-administrator users can access (since we're using them when we SSH in). As the computer administrator we're going to create some directories, and then a usergroup, and finally add the users to that group, and give the group access to the folder. Then we can restrict SSH logins to those users, but they can still access all the files we want to access anyway.

  I chose to make a new high level directory /share with the command "mkdir /share". Within that I have /share/music, /share/photos, and /share/repos. This last one is where our subversion repositories will sit. The repository is where subversion maintains all of the files and file history that it uses. We will actually add the repositories first, and then do our group permissions to make sure that the permissions take on the repository files.

  I followed the quick start guide at the end of the svnbook to get myself started. First, we tell svn we want to use to repos folder as our repository;
    svn create repos
Now we add files
    svn import /tmp/myproject file:///var/svn/repos/ProjectA -m "initial import" 

The argument goes svn import [folder holding your files] [repository you want to add the files to]. The -m tells it what comment to associate with this version. It's always good to add comments to your commits so you can figure where to roll back to.

  Now I promised user groups and access to that folder. Create the usergroup and add users with the commands;
    sudo addgroup sharegrp
    sudo adduser username sharegrp
  Obviously username needs to be changed to the actual user name you want to add.
  Now we need to change permissions on the folder we created.
    chgrp sharegrp -R /share
    sudo chmod -R 775 /share
  This sets the group associated with the share folder as sharegrp. The second command changes the folder permissions to read-write-execute for owner (root) and group (sharegrp) and read-execute for any other users. The -R flag tells it to recursively do this for all the folders and files in the folder. I still had some issues being able to read / write to the folder immediately after, but a simple log-out and log-in fixed this for me.


  Now we've established and populated the subversion repository, we can check it out on our remote computers. I was following this guide, but the basic steps are to install TortoiseSVN. TortoiseSVN integrates into the windows shell, so that when you right click on or in a folder, you should see some new options "SVN Checkout" and "TortoiseSVN" with an arrow for more options. First we need to tell T.SVN that we'll be using ssh. So right click anywhere and go to TortoiseSVN -> Settings -> Network. Browse for the TortoisePlink SSH client. Mine was located at "C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe". Now let's checkout the repository. Navigate where you want it, right click and hit "SVN Checkout". It will prompt us for the repository we wish to checkout. You want to end up with something like;
    svn+ssh://[username]@[PuTTY Saved session name]/share/repos/ProjectA
  Oh, I should mention; once PuTTY can connect to your server, re-enter the information, then give it a name on the main screen, and click save. This will save the session, and allow other programs, like plink or tortoiseplink (both command line interfaces to putty) to access this session. That's what I referred to above as the PuTTY saved session name. Also, it's useful to have Paegent running in the background during this, to run the authentication without prompting you for it. Click "Okay" and you should be on your way to checking out your repository!

  I also had to configure svn for my linux work machine. The command line interface is a tad bit different. First off, since we're using a non-standard port, we have to add a new ssh tunnel for subversion. Edit ~/.subversion/config under the [tunnels] heading add in myssh = ssh -p 422
Now when you go to checkout tell svn to use that tunnel with the command;
    svn checkout svn+myssh://[username]@[madscientistlair.blogspot.com]/share/repos/ProjectA

Now onto using subversion. The basic work cycle goes something like this;
    update -> resolve conflicts -> make changes -> commit changes
In TortoiseSVN click the folder you want to update and go "SVN Update". From the linux command line, either use svn update if you're in the folder, or svn update [path to folder] to update the specific repository. I've not yet had to resolve many conflicts, so I'm going to leave this blank for now. Once I have some more experience I'll link to a detailed discussion. When you're done commit the changes with svn commit -m "comment on the changes". Or use Tortoise, right click the folder and use SVN Commit. I have noticed that TortoiseSVN someitmes won't commit any changes, if you right click on the top level directory, and you have not checked out all the sub-directories.
  On this note, you may only want to check out part of a repository, here's how to do it. For instance, assume our project repository looks like;
  ProjectA
    |-Web
    |-Template
    |-Android
    `-Matlab
and you don't want the Web or Template folders checked out. When you initially check out the repository, select "Checkout Depth -> Immediate children including folders". This will make empty folders which you can then populate by right clicking and using SVN Update, but under options pull down "Fully Recursive" instead of "Working Copy".
  Again, when you're done making your changes, bring the server back up to date by right clicking and going SVN Commit.

  That's it. This is pretty cursory guide to getting SVN running on our server, but you should have a functional, if rudimentary, SVN system now.