Showing posts with label software. Show all posts
Showing posts with label software. Show all posts

Tuesday, May 29, 2012

Ubuntu 12.04: The Good. The Bad. The (Not So?) Ugly.

Hello friends!

I recently upgraded by home PC from Ubuntu 10.04 to Ubuntu 12.04. I decided to make a hardware change as well, specifically, upgrading my primary hard drive from a 320GB SATA to a 2TB SATA.

Now, I didn't actually "upgrade" the 10.04 to Ubuntu 12.04 in place, I installed a fresh copy of Ubuntu 12.04 on the 2TB drive and manually migrated my programs, settings and files over to the new system. I personally like to start with fresh installs when possible, and given all the custom modifications I had made to my system, I feared an upgrade would cause more problems then it was worth (if you've had a different experience, let us know).

I didn't take the choice of upgrading to Ubuntu 12.04 lightly. I knew I would have to upgrade 10.04 sooner or later, only having a year 10.04 support left, and didn't want to let it go until the last minute. Having heard a lot of dislike between versions 10.10, 11.04, and 11.10 (the Unity UI for example), I seriously considered switching to another distribution such as Linux Mint.

In the end, I decided to give Ubuntu 12.04 a try. From looking at the screen shots and reading the design philosophy, I decided Unity was worth a try. Even if I didn't like it, I knew I could always install another desktop on top, like classic GNOME, Cinnamon, or GNOME 3, without having to switch distros.

So far, I'm happy with what I see, and think I'll be sticking around with Ubuntu, at least for now. The future is always open though!

The Good


Off the bat, a lot of 12.04, including the GUI, impressed me. Install and format process was very fast, even on the 2TB drive. I haven't tried setting up a dual boot system (Linux only) but that has been extremely easy since at least 9.10 so assuming it's been kept up to date with newer versions of other OS's, I don't imagine much of an issue.

Nvidia Binary Drivers


Nvidia Binary Drivers were detected and installed out of the box, no configuration needed. This gave me access to 3D acceleration and advanced multi-display configuration - a must have for a HTPC. I did use the Hardware Drivers option to upgrade to the "bleeding edge" drivers, though rather this was necessary or not, I'm not sure.

HDMI Audio Support


Remember this post? Thanks to an updated ALSA, HDMI Audio worked out of the box too. They also fixed the under-enumeration problem present in 10.04. I immediately had a (single) HDMI audio option in the Sound Devices that I could select and move back and forth seemlessly, no fuss. Success!

New MythTV & HVR1600 support


Since one of the main purposes of the my machine is to use as a HTPC and DVR, I installed MythTV straight from the repositories, and no issues setting up my card. Just don't forget to add you cx18.conf file to /etc/modprobe.d :)

Webcam Support

In 10.04 I was never quite able to get my Webcam and my HVR1600 working together. In 12.04, they seem to both work happily, though I haven't tried unplugging the webcam yet (that may still cause some issues to be aware of)

Improved Third Party Software

Firefox and Thunderbird are installed by default. Maybe you don't like them, but I do. Skype works fairly well and is easily installable. The Ubuntu Software Center is really nice, so far I haven't had any need to use another package manager (though I may need to at some point).

The Bad


USB3.0


I never got USB3.0 working reliably on 10.04, and 12.04 doesn't seem to have improved much. Although the Linux kernel officially supports USB3.0, I'm guessing the there is something amiss with the drivers for my specific chipset (the 3.0 ports are build into the motherboard). I am certain the ports, cords and external hard drive are all USB3.0, but I've never gotten any more then a sustained 60 MB/sec (480Mb/sec, USB2.0) transfer speeds when connected to the USB3.0 ports. Worse, I get sporadic "unmounting" of the USB drive when connected over 3.0, and cannot remount without restarting the computer. I realize this is likely the fault of a driver, or missing kernel module (and less Ubuntu), but it's still irritating. Hopefully I can figure out the bottle neck and start getting reliable USB 3.0 support.

Flash

So basically, YouTube videos have a blueish tint. Yep, you heard me right. Apparently, this is a bug in Flash,  but since Adobe has officially discontinued Flash for Linux, with 11.2 being the last version, it is unlikely the bug will be fixed. Now, there are workarounds, the easiest being to disable hardware acceleration,  but come on, something like this shouldn't be necessary as now I have to drive my CPU hotter. 

Another bizarre issue with Flash if you are using dual desktops: Full screen sometimes only appears on your *primary* display, even if the originating window was on the second. Now, I didn't have this problem with YouTube (full screen was on the correct display), but I did have this problem with sites that used their own custom player based on Flash, such as video from the sites of TV Networks. I found a work around for this using gDevilspie (see this thread). But this only addressed the *position* of the window, *not* the size. so unless the two displays were running at the resolution, the full screen was cropped and I could only see the top-left portion. My only work around of this (for now) is to run both displays at the same resolution. 

Hopefully with Flash for Linux discontinued, Canonical (or someone out there) will do the right thing and take over the reigns of support Flash going into the future. Even if you wish Flash would just die, pretending it's already dead is not the solution to a good user experience.

LIRC

LIRC is a great program, unless your card just happens to not be supported. This isn't LIRC's fault, it tries its best, but for legal reasons there are certain remote they just can't support. Getting LIRC to work for my HVR1600 card was a *huge* pain on 10.04, requiring me to build a custom kernel module. I did eventually get it, but if memory serves, it took several months.

Unfortunately, my card *still* isn't supported in the newest version of LIRC with 12.04. Likely, it never will. On 10.04, I was able to build the kernel module thanks to the lirc-modules-source package and a very nice Fedora user, but it wasn't fun. Unfortunately, it appears lirc-modules-source is not available for 12.04! So until it is, I can't update the patch for 12.04, nor build my kernel module or use my IR Blaster/Receiver.

UPDATE!  I *have* gotten LIRC for my HVR1600 card working on 12.04! Without too much difficulty. I happened across a pre-complied version of the necessary module, lirc_zilog, here inside of a DEB file (32 and 64-bit versions available). I'll post a more comprehensive tutorial as soon as I have a spare moment :).

The (Not So?) Ugly

Unity

Hey, I like it. Been using it for a few weeks now and I find it pretty fluid and easy to use. The HUD feature is very cool. Now, now, I know what you are thinking...that damn Unity bar is glued to the left side!!! While I agree that, in principle, this was a poor choice on the part of the Unity developers, you have to remember that Unity is just one desktop environment. You aren't forced to use it, and there are even forks out there (or could fire one up yourself) to get it on the bottom if it's really important to you. Or use an alternative like Cairo dock, or another desktop environment. So it's not really a reason to abandon the distribution altogether, at least IMHO. And if you give it try, you might just like it too. While I do hope they add an supported option to move it in the future, for now I can deal.

X-Session Weirdness

In Ubuntu 10.04, I ran GNOME on two separate X-sessions, one of the PC display, and one of the TV display. I liked this better then running a single display on both, since applications seemed to handle it better (e.g. full screen Flash), even though it meant you couldn't move windows between displays (no biggie to me).

When I enabled dual X-sessions (with the Nvidia-config tool) in 12.04, I was very confused. On one display was the normal Ubuntu desktop, but on the other was just a pure white background with a "X" for a cursor. Obviously 12.04/Unity wasn't designed to handle dual X-sessions this way.

So, I flipped over to Twinview, to see if I could configure that the way I wanted. To my vast surprise, I found two separate desktops (complete with Launcher and top menu bar) just as if I was using dual X-sessions! But now, I had the ability to move windows between desktops. Pretty cool, considering I had been expecting something similar to way Windows handles extended displays, just making a blank window space on the other monitor, but no separate task bar.

So it seems like they tried to take the best of dual X-sessions and the best of Twinview (extended desktop) and munge them together (as a new form of Twinview). And honestly, it works pretty well, except for two problems I've found so far:

1) The "Flash" full screen issue I mentioned above
2) Applications don't quite "understand" it.

What I mean by #2 is that I'm used to being able to launch an X program on either GUI from the command line simply by setting the "DISPLAY" environment variable. Well, in 12.04 no such luck, the DISPLAY environment variable has the same value (0) regardless of what display you are on. So now, launching applications based on the X-session is a little trickier than it used to be - not a good thing. For the most part, applications do work correctly if you launch them on the correct display, but I haven't yet figured out how to launch an application on a specific display from the command line. Unfortunately, MythTV was one of the applications that didn't quite behave, it was showing up on the primary display regardless of what display I launched it from. No good - I need Myth on my secondary (TV) display. Thankfully I found an option in the MythTV appearance settings which allowed me to choose between display "0" and "1". Setting to 1 put it on the TV display....just as if I had set the environment variable. So there is some support similar to the old methods, but it appears to be application specific.

But sometimes (like when I'm running mythbackend), I *do* want it on the primary display. I used to have separate scripts that I could run for which display I wanted to appear on...but even trying to use the "--display" option on the mythfrontend command line, it goes to whatever display I set it to in the options. So, I have a workaround for now (setting the display option in the settings), but this is irritating...having a way to move it on the command line would be much preferred.

It's only been a few weeks, but so far I like what I see in 12.04 and find it a worthy successor to 10.04 (I usually skip non-LTS versions...due to the work involved with upgrading). So I'll be sticking with Ubuntu for now, and hope others out there enjoy it as well.

Have a great day!

Saturday, May 12, 2012

The Art of Computer Programming


Greetings all!

Have you ever heard that computer programming (and by extension, Software Engineering) is an act/profession that doesn't require any imagination or creativity?

I certainly have, but such comments tend to be made by people with no knowledge or experience in the field, so their ignorance can be (at least partially) forgiven.

But as such, it prompted me to write an article about why this is untrue; software development does indeed require imagination and creativity, in fact, quite a lot of it!

It's not too difficult to see how such an option might evolve among the common populace, if you look at the "stereotypical" view of a software developer in society, you'll find a person (often male), wearing a white collared shirt sitting in dull, grey-looking cubical typing on a dull black computer with meaningless lines of white (or green if you are really lucky) text on the screen. How could someone in such a boring-looking world possibly have any sense of creativity?

If you examine software developers in real life, you actually find a much different perspective. But I digress, this article isn't really about the people, it's about the work itself. There is another common misconception about programming: that it is completely formulamatic, and that programmers just go through the motions dicated from a book or a superior and somehow miraculously end up with a perfectly working program. Nothing could be further from the truth.

Imagination can be defined in serveral ways, but to me, it typically refers to the ability to create images or sensory input in one's mind. For example, I can picture what a peanut butter sandwich looks like, without my eyes actually seeing in. I can recall what it smells like, what it tastes like and what it feels like to hold. I can ever hear what I sound like while chewing it.

But this is only the memory aspect of imagination. There is a whole other layer of imagination on top of it, namely, the ability to create things that you have never  actually experienced.

For example, I have never been to the Eiffel tower, but I can imagine standing on top of it. I have never been in space, but I can imagine floating in midair.

Our imagination can dream up things we've never thought of before, like the plot of a novel or a "Eureka" moment in a discovery. These ideas use building blocks to create something completely new. This also leads into creativity, typically the creation of something new, where "new" depends on the domain of what's being created.

Returning to the theme of developing software, there are many aspects of which require imagination and creativity, for example:

1) Imagining the finished project from high level sketch. The idea for the a piece of software typically comes form one of two places: a) Your brain; b) Someone else's brain. If you come up with an idea for a piece of software (perhaps because it's something you need, but doesn't exist yet), then you clearly exercised creativity. But even if you are developing the idea for some else, you still need to exercise your imagination and creativity. For example, in both cases you exercised imagination to envision the new software even though you've never actually seen it.

Descriptions of software to be developed tend to start as extremely abstract...just a setence or paragraph on what the software needs to do without any idea of how it is going to be done. It is up to the developer to figure out how to get there, by imagining the finished project. The developer might even come up with new things the software should or needs to do that the client never even thought of. Software gets very complicated very fast. For example, there can be many programs (not just one) involved, and communication between them, as well as documentation and many rounds of testing. Sometimes, it even takes creative methods to get the client to tell you what they need in their software, since often, they aren't sure themselves!

2) Building a cohesive whole from primitive building blocks. Computers have evolved over the years from lights blinking on a box to complex machines capable of displaying millions of pixels or performaing trillions of operations per second. It is extremely rare that any piece of software developed today is built entirely "from scratch". If software always needed to be developed from completely scratch, we'd still be using boxes with blinking lights and flipping switches to represent binary input. Over the years, software developers have add layers of "encapsulation" onto the basic circuitry inside a computer. Primitative building blocks that allow us to make the computer do something useful, for example, moving a piece of data from memory block to another, or turning a specific pixel a specific color.

When you go to develop a piece of software, you need to carefully understand the requirements, and then figure out how to combine the primitive operations available to form a cohesive whole. And sometimes you don't have the building blocks you need, so you have to find them or create them, using even more primitive operations.

Software is all about layers and building from smaller blocks. It's like when you were a child playing with your first batch of Legos. In the box, they are just thousands of individual blocks, useless by themselves. But when you combine them with imagination and creativity, you can combine those blocks in an astronomical number of ways to form something completely different. Building software is much the same, and without imagination, you wouldn't be able to combine them together to create something useful, nor keep track of the building blocks the software requires which can easily number into the millions.

3) Visualizaling what the ones and zeros actually mean. It can be hard to imagine to the novice user, but even today, at the heart of computing is nothing more then the manipulation of binary data, that is, ones and zeros (binary digits, or bits). And yet, when you look at your screen, you see text, buttons, pictures, even videos. And yet, it's ALL just ones and zeros. When a programmer is creating a piece of software, they continually have to imagine what that data, the ones and zeros, actually represents. Now, there are building blocks to help, some of the most primitive operations the computer provides are used to interpret once piece of binary data as another, for example, turning a group of bits into the letter 'A', or the number 65, or the color of a pixel. But you can't lose track of what it is underneith, and to visualize ones and zeros forming a picture of a beautiful sunset certainly requires imagination. 

4) Solving problems in creative ways. Solving a problem or problems with software usually requires solving a bunch of smaller problems, then combining the solutions of the smaller problems together to solve the big problems. Each smaller problem is usually solved with a concise sequence of logical statements often mathematical in origin. The same task can usually be done in many different ways, using different sequences of logical statements.


Navigating a logical sequence of statements is rarely trivial, whether you are writing it or reading it. At each stage, you have to clearly imagine what that statement means (sometimes in terms of the ones and zeros in the computer, sometimes visually like boxes and pipes) and keep it in your minds eye for hundreds or thosands more logical statements you are writing to make it make sense.

The ability to break the large problem up into smaller problems takes a lot of creativity, and solutions to the smaller problems themselves are often far from obvious.

5) Development of user interfaces. Programmers rarely write programs which just do a single thing, all the time. Most software is capable of performing many different tasks, and requires input from a user, which can be entered an enormous number of ways. So not only do programmers have to write the software to perform a funtion, they need to envision a way to let the user tell the software what to do.

A lot of software today provides a Graphical User Interface (GUI, pronounced 'gooey'). Creating a good GUI is a subject of much discussion, and can be considered an art form all on its own. The operating system you are using now (likely, though perhaps not) includes a GUI, as does the web browser you are reading this page on. It took a lot of time and creativity on the part of the devlopers to figure out how to make the GUI work well and be usable. And even then it's difficult, because a devloper will tend to write a GUI that a developer wants to use...but often that isn't sufficient for the non-devloper. As such, they have to imagine what it's like to be an average user, and create the GUI for them, not themselves. Stepping outside of yourself like that is not easy, and requires a lot of imagination. Even software which provides a non-GUI interface, like a text-only interface (yes, they still exist) needs to think about the user, and figure out a good way to describe all of the functions and operations of the software through text only.

6) Breaking software. You might be suprised to learn that an important job of a software developer is actually trying to figure out how to break the software, let alone figuing out how to write it. All professional developers want their software to be completely bug free, but in reality, that goal isn't achievable. Still, as perfectionists, we strieve to make our software the absolute best that it can be, and one possible metric by which to measure that is bugs. Bugs (and sometimes new "features") typically happen because the user does something with the software that the developer didn't ancipiate, and so the software does something unexpected.

In fact, software development companies have entire departements dedicated to testing and trying to break software, sometimes these departments are even bigger than the developent department. And they are effectively programmers themselves, just doing a different kind of programming. One job is to write their own programs, specifically for the purpose of testing the product program. If the software is supposed to do things "A","B" and "C", then they write a program to exercise A, B and C in different ways, then check that the software preforms as expected.

But, it's also their job to imagine ways to use the software in unexpected ways, and see how the software reacts. Such a task requires you to create inputs entirely from your imagination, and sometimes to break the software you need to get pretty creative, depending on how well the original developer considered the possible inputs. For the programmer, tracking down bugs and figuring out methods to fix them while maintaining the integrity of the software is a strong exercise in creativity and imagination.

7) Documentation and help files. Software is useless unless you have a good way to tell the user how to use it. Developers also need to write extensive documentation on the software themselves so they can use it as reference material when updating and changing the software.

A GUI can only hold so much information, so most software typically has a Help section. The Help section describes all of the software in greater detail, so that the user can understand it at a more basic level in order to decide how to perform tasks. Writing this documentation requires you to imagine how the software will work, and what it looks like, especially since the person writing it might not have developed it. It's also important to organize how the Help appears so that it is accessible to the user.

The documentation of the software can number into the thousands of pages and also needs to be well organized. Having creative ways to store and reference this documentation so it can be recalled by the developers when needed is critical. Trust me, you don't want the developer of a nuclear power plant's software writing code without a clear picture in his or her head of what it's going to do!

8) Considering the pace at which technology changes, and anticipanting future needs. Technology moves very, very rapidly. As such, professional software is almost never just a |one-off" peice of work which is never touched again. Software evolves over time, and when programming, you can't just consider what the software needs to do today, you need to anticipate what it's going to need to do tomorrow, the next day and the day after that. Some software systems survive for decades after their original developement. If the original developers of the software hadn't had any imagination or creativity, they wouldn't have been able to build the software to evolve, and have to be constantly replacing the software. But, in reality, developers build software to evolve, to live and to grow.

Even this list is hardly exlusive, a professional programmer could probably add a few more ways on top of the ones listed on how programming requires creativity. Just because we might (emphesis on the might) not be able to paint a masterpeice or decorate a house hardly means that we lack imagination and creativity, it just means that we express it in different ways.

I hope that this blog post has been enlightening to you, and encourage you to consider all the imagination, creativity, and hard work into the software you use everyday. Today, the world runs on software, and that's unlikely to change any time soon. Considering all of this, why one would think  programming doesn't require imagination and creativty, especially when it's something they've never experienced, is beyond me. Or at least, beyond this particular blog post :)

Take care, and have a great day!

Saturday, May 8, 2010

Upgrading to 10.04? Might need to fix your display settings.

Call me an "early adopter", but I love playing with bleeding edge tech (when I have the cash :) even though it might cause a few buggy issues.

As such I was excited when Ubuntu 10.04 LTS was released just over a week ago. After installing the latest Karmic upgrades, I was presented with a friendly request to upgrade to 10.04 and decided to take it. And as always for Linux, the monetary cost isn't something I need to worry about :).
Link
The Install Process

Installing over my Karmic install was fairly painless, but slow. It had to download about 2.5GB, which surprised me since the install CD's themselves are usually only around 700 MB. The download proceeded smoothly and after a few hours the install began. Again, there wasn't a heck of lot of user interaction on my part, just a few dialogs I needed to answer. After an hour or two more, I was prompted for a reboot to continue.

What the....?

Not sure I was quite prepared for what came next. As you might have seen before in my blog, I have a rather customized Gnome desktop, including a custom Xorg.conf file for extended displays. Upon rebooting, my entire desktop was...rather messed up. It's hard to describe, but the desktop seemed to be flipped 180 degrees, and the icons themselves were inverted. The entire desktop was also completely unresponsive. I couldn't click anything, nor would the keyboard or any of my short cuts respond!


Very strange, though I had an inkling it had to with my various desktop modifications. A close up on the Gnome menu:

What next?

Strange looking, hmmm? That's what I thought. However, this isn't the first time I've totally borked my Gnome desktop, so I knew what I had to do to reset it. I restarted and used grub to enter recovery mode which allowed me to boot into a command line interface (Tip: You can also try CTRL-ALT-F1 to get to a command line).

I then gained root access with a sudo bash command, and made a backup folder. From there, a copied the following four folders: .gnome2, .gconf, .gconfd and .gnome_private into the backup folder (Tip: You can use cp -r to move directories and their contents recursively).

I then used rm -rf to remove each of the folders (Don't do this as root from your / directory lest you delete your entire file system!)

Upon rebooting, Ubuntu decided it needed to do a disk check. Considering my last few hard reboots, this was expected:


After it was finished (~20 minutes), I booted into Gnome. My customized desktop was gone *but* everything was still oddly "inverted":



Still borked, apparently. The only other thing I could think of that might be causing such an odd issue is my custom Xorg.conf file, as these haven't officially been in Ubuntu for a while.

So I booted back into the terminal and removed it. And voila! I was presented with:


First thoughts on 10.04

As Bender would say, we're back baby! I then tried restoring my old Gnome settings from the backup (with the removed Xorg.conf, after backing up the current settings first), though this caused my Gnome to freeze on restart, so I put the old desktop back. Still, if you run into a similar issue, I recommend simply trying to remove your Xorg.conf first before resetting Gnome. I'll spend some time with the new Gnome theme before I decide how I want to customize it. So far it's pretty spiffy, if odd looking, not sure if I'll get used to the window controls being on the left side of the screen! No problems with my wi-fi, connected with no issues. My sound isn't working, though I have yet to figure out why, and I'll need to figure out how to bring back my extended display, such is the price you occasionally pay for trying out the latest and greatest. Still, the OS itself seems solid enough though (blazing fast on this outdated hardware!), and I look forward to playing with it more. Hope this post gives a hand to any others who run into the odd display issue I did!

Tuesday, September 15, 2009

HP Pavilion tx2617ca Review

Raison d'etre

I'd been in the market for a new laptop for a while, but was holding off until the end of school to get one. I first spotted the tx2617 in December at Staples Business Depot, but spent some time considering other options, eventually picking it up in April 2009.

The tx2617ca is a "convertible tablet PC". The machine functions just like a normal notebook: but the screen has the ability to swivel 180 degrees and fold down over the keyboard to be used as a "tablet": A pen-input based computer.


I wanted a tablet computer for a number of reasons: Mainly, I am constantly taking notes and have a hard time keeping track of them: they either get lost, ruined or eventually buried in a binder in a box who-knows-where. And when I need to reference one again, I'm forced to dig though the myriad of papers dotting my apartment floor to find the one I need. I also loved the idea of reading web pages, e-mails, and e-books like actual books, doing digital drawings, and wanted a small form factor for high portability.

Being a computer scientist (and all around geek), a digital solution seemed right up my alley. I'd actually first seen Tablet PC's in Grade 10 (around 7 years or so ago) and was obsessed with them since then (Penny's computer book from Inspector Gadget anyone?). But buying one was hardly in my price range then (or now for that matter, but more on that). When I did purchase my first laptop in my first year of university, I strongly considered getting a tablet: but they were still pricey and underpowered compared to other machines on the market: I needed something more powerful, essentially a portable desktop replacement to replace my clunky (but reliable) Dell machine tower that served me through out high school. Although I was attracted to a slate-style model, I really need a keyboard for coding if nothing else. So I held off on the tablet for a few more years.

Fast forward to 2009. School was ending and I had some extra cash in my bank account. I had committed to buying a tablet PC. But a quick look at what was available left me in the dust: the majority of tablets I'd seen were still in the whopping $2000 price range. I did manage to find a online few for thirteen to fourteen hundred, before tax/shipping/warranty's/etc. Then I remembered the tx2617ca I'd seen and did some research.

The price according to Staples website changed significantly over the few weeks I'd been checking it out: from $1049 to $999 to $849. Online information and reviews seemed scarce at best, which could be a good or bad sign. I'd figured the machine was still decently new, and so there hadn't been too much comprehensive testing, yet. I did find its feature list however, and they were sending me to that geeky place known as "specification heaven":

Product Name tx2617ca
Microprocessor 2.10 GHz AMD Athlon X2 QL-62 Dual-Core Mobile Processor
(the marketing jazz says Turion but the system itself says Altlon)
Microprocessor Cache 1 MB L2 Cache
Memory 4096 MB (max)
Video Graphics ATI Radeon HD 3200
Video Memory Up to 1982 MB
Hard Drive 250 GB (5400 rpm)
Multimedia Drive LightScribe Super Multi 8X DVD±R/RW with Double Layer Support
Display 12.1" WXGA High-Definition HP BrightView Widescreen Integrated
Touch-screen, Convertible Display (1280 x 800)
Network Card Integrated 10/100/1000 Gigabit Ethernet LAN
Wireless Connectivity Wireless LAN 802.11a/b/g/n
Sound Altec Lansing speakers
Keyboard 101-key compatible
Pointing Device Touch Pad with dedicated vertical and horizontal Scroll Up/Down pad
PC Card Slots One ExpressCard/34 slot
External Ports
* 5-in-1 integrated Digital Media Reader for Secure Digital cards, MultiMedia cards, Memory Stick, Memory Stick Pro, or xD Picture cards
* 3 Universal Serial Bus USB 2.0
* 1 VGA (15-pin)
* 1 S-video (7-pin)
* 1 RJ-11 (modem)
* 1 RJ -45 (LAN)
* 2 headphone-out
* 1 microphone-in
* 1 notebook expansion port 3
* Consumer IR
* Integrated Stereo Microphones
Dimensions 8.82"(L) x 12.05"(D) x 1.23" (min H)/1.52" (max H)
Weight 4.56 lbs
Security
* Integrated Fingerprint Reader
* Kensington MicroSaver lock slot
* Power-on password
* Accepts 3rd party security lock devices
Power
* 65 W AC Adapter
* 6-cell Lithium-Ion (Li-Ion)
Operating System: Windows Vista Home Premium 64-bit with Service Pack 1

Perhaps not the top of the market, but considerably more juice then my previous machine, and easily passing many notebooks at the time. With my previous machine getting on its last legs (at least until I give it a planned overhaul later in the year), I really liked that this machine had potential to replace it, not just supplement it. My first worries however were screen and keyboard size. I wasn't sure if 12.1 inches would cut it, coming from a 15.4 inch screen. And smaller screens usually meant smaller keyboards: something I dreaded from those nasty looking "netbook" keyboards.

When I went to have a closer look: there were none there! The machine was listed on the shelf, now for $899 on "clearance". But there was no machine there, so I had to ask. I was in luck: one left (probably the original demo machine). I asked to have a look at it: the screen really didn't feel small and I was pleasantly surprised to find a very full sized keyboard most of the alpha numeric keys actually being larger then those on my 15.4 inch notebook, at the expense of some smaller function and specialty keys. Since this was the last one left, I knew if I didn't buy it now I wasn't likely to find another any time soon, so I rang it up and it came home with me. I still had 14 days to return it if I felt the screen size would be a deal breaker. Finally, on to the heart of the review!

External case:

The machine itself feels very strong and well built. No flex on the case, and the swivel hinge feels very solid and doesn't seem to have loosened much at all in three months. No odd noises or clicky-ness, I'd be lying if I said the fan was silent, but its not too bad, it just gets loud when doing something processor intensive... The screen also feels very strong, its recessed in a bit from the case:


There are enough ports to keep you going: Gigabit Ethernet, 3 USB, SD card reader, 15-pin D-sub, 7 pin S-video. I really like the S-video since I only have an older standard definition TV set, it works great for watching movies, DVD's, etc (hopefully if I ever get a higher definition TV I can use the VGA). The optical drive works well, though I haven't used the Lightscribe functionality:


Also, the machine comes with a small media remote, which works great (especially when connected to a TV for watching DVDs, etc), though I'm still trying to customize its functionality a little more. It also has a finger print reader that you have to enroll your finger prints to use, though it only seems to pick mine up once every 3 tries or so, though I believe that's more my own fault. The stylus has a perfect resting place at the bottom of the keyboard, which is easily accessible no matter what orientation you're using the computer in.


It comes with a lanyard connecting it to the computer, but I don't use it since I found it got in my way when writing. Nevertheless, it's spring loaded and can fly quite the distance if you're not careful. One thing I don't like about the case is how the air vent and power connector are on the left and right sides of the machine (facing the screen) respectively:

Although fine when in landscape mode, when using my machine as a tablet, I'll most often have it in portrait mode (like a piece of paper), which means that you are either blocking the power connector, or partially blocking the air vent. Chalk this one up to poor choice on the part of the designer, though I tend to have the machine on the battery when I'm using it in portrait mode, so I use it with the connector facing me. Secondly, although quite light at about 5 pounds, I find the machine just a tad heavy to hold in portrait mode for too long (like a book). I find myself having to balance it against my legs, arms, or chest (hence why blocking the port or the vent is a problem). The screen has media keys which work good, as well as quick keys for screen rotation and Windows Mobility center. There are also "DVD" and "Quick Play" keys, but these only work if you use the HP Quickplay software (I don't), nor have I found any way to reprogram them. There are also media keys on the screen which function the same as the "FN" media keys on many laptops:


The memory, wifi card, and hard drive are all accessible from the bottom. The optical drive also snaps in and out with the flick of a switch: this came in very handy a few days ago when the tip of a 3.5 mm jack broke off in the audio out and rattling around inside, I was able to get it out simply by taking out the optical drive and guiding it through the slot:

The screen and video:

The 12.1 inch screen actually runs at the same resolution as my 15.4: 1280x800. The means I get the same screen real estate as on my old screen, albeit things being are a bit smaller. After a few hours of using though, I hardly noticed the screen size: it was plenty big for email, web browsing, and standard work (e.g. coding). I haven't done significant gaming on it, but it works good for our Stronghold Crusader and Civilization 4 LAN parties. Movies play no problem, and the ATI video card handles video output and dual desktop without issues (important for me). The screen is bright, but difficult to see in sunlight, even at maximum brightness, which is one thing I don't like. The second thing I dislike about the screen is the viewing angle. The horizontal viewing angle isn't too bad (from a standard notebook point of view), but the vertical angle is terrible. I would like to be able to see what's written on the screen in portrait mode when its just laying on my desk to the right of me, but you pretty much have to have it directly in front of you to see, and even then, your head needs to be tilted almost directly over it. I suppose it could be argued a good thing for privacy reasons, but I'd personally prefer the better angle. This is fine for a regular notebook, but not a tablet.

Comparison of viewing angles:


It also attracts dust and smudges like a magnet: be sure to have a cloth with you for cleaning readily (one was provided in my box with the machine). Note that the screen is not multi-touch, unlike the newer TX2's (something I'm afraid I'll regret with Windows 7).

The keyboard:

As mentioned above, I like the keyboard a lot, the keys are all plenty large for use. I do have some issues with the specialty keys, at the top right of the keyboard are the "pg up/dn/home/end/insert/del" keys. I find myself having to memorize the location of these keys because its impossible to read the text on them at a standard use distance. The F-keys are little easier to read than the other keys, and I do understand this choice so that the alpha numeric keys can be larger. I would have liked to see more shortcut keys on the screen itself, specifically for scrolling documents when reading them, since using the on screen scroll bar in tablet mode can be awkward.


Stylus and Touchpad:

The touchpad is completely covered in recessed dots, I'm not sure if this is supposed to make it more comfortable or easy to use, to be honest I hardly notice it. There's a button at the top to turn the touchpad on or off, as well as a vertical strip for scrolling. The touch pad works fine and is easy to use, but there's nothing spectacular about it either.

The stylus is awesome. It's thin and light (about the size of a mechanical pencil), easy to write with. The screen can pick up the stylus' location when hovering above the screen, same as a mouse's "hover function". The right click button is a bit hard to use, since I rarely pick up the pen in the right orientation to push it (you can also right click by holding the pen on the screen for a few seconds). You can also "erase" by using the opposite side of the stylus, which is neat though sometimes you have to press a bit hard.


The speakers and audio:

I'm impressed with the output from the Altec Lansing speakers, though I don't use them on a regular basis, most of the time I use the audio out, either hooked up to a pair of headphones (once again, a great pair of HP headphones came with the computer), or my TV. There's a third "HD" audio port, but I rarely use it. I'm honestly not sure what's its supposed to be used for (I don't think it supports 5.1 or anything that I can find).

Microphone and Webcam:

The computer has duel microphones built in above the screen, along with a webcam. The microphones pick up sound okay, I use it to chat on Skype with little issue, but you can't keep your mouth too far away. The webcam has a good picture, though I can't figure out if there's a way to "rotate" the image, otherwise you appear at the wrong angle when using it in other orientations.



Speed:

The machine is quite speedy, the Athlon X2 is a desktop level processor. I usually keep it throttled with Vista's power options to about 35% with no noticeable degradation in performance (except for some movies and games, for which I'll put it up closer to normal). The machine has 4 GB of ram, and a 250 GB, 5400 rpm drive which I haven't had any trouble with. I have two partitions of roughly equal size (not including the recovery partition), one for Windows + software, and one for documents (I prefer this setup to protect data should I need to reformat the software partition). Visual C# is a tad slow compiling and running, though no slower then my old machine (I blame it more on .NET). I of course removed all the unnecessary bloatware from the machine as well as start up programs, and run CCleaner on a regular basis.

Wifi:

The wireless works good and has great range (better than my old machine), it's draft-N though unfortunately I haven't had the opportunity to a connect to draft-N router to see just how much faster it is. Curiously, the range on the WiFi is considerably smaller when it tablet mode, it doesn't seem any slower, but you have to be closer to the access point to connect (preferably in the same room). My guess is it has something to do with the placement and orientation of the antenna getting less signal when in tablet mode.

Heat:

The heat from the machine is something that concerns me and I'm keeping an eye on. Although it doesn't get nearly as warm as my old laptop, it still gets a little warmer then I'm comfortable with. Although the case itself doesn't feel too warm, Speedfan tends to read between 55-60 degrees C, which seems quite warm. When the fan comes on, it pumps considerable waves of hot air out of the unit. The case also seems to get hotter when the processor revs up, such as during a virus scan. When in tablet mode, the screen also gets noticeably warm around the fan to the point it can be uncomfortable to rest your wrist on, which worries me (likewise the keyboard is warm going back to notebook mode). My guess this is due to the processor in the machine, and I keep the processor throttled even when plugged in to try to manage this. I have a few cooling pads, which I use if it's doing something processor intensive, but prefer not too so as to keep the smaller form factor (it's awkward to write on in tablet mode with the cooling pad because of the height raise).

Battery life:

My battery usually gives me about 2.5 to three hours of light use with the processor throttled. Obviously more would be better, but as mentioned the Athlon X2 is a desktop level processor so it sucks down a lot of juice, even when throttled. I also stretch this out by going to standby whenever not in use. So far, I've been happy with the trade off, though I might consider buying a second, stronger battery, I've also heard Windows 7 is getting more juice out of the batteries which I'm looking forward to trying.

Software and Tablet usage:

As mentioned above, I removed the bloatware upon installation, leaving mostly just Windows Vista Home Premium installed, along with the software I use. I was nervous about Vista at first from what I'd heard and having only used XP on my previous two machines. I was pleasantly surprised though, I've had few issues with Vista itself, though I am considering getting Windows 7 when it's released (having unfortunately missed the "grace" upgrade period of course), specifically for its touch screen features (even without multi-touch). One issue I did have is with Windows Media Center: it likes to crash a lot, so I've since switched since to Boxee, which works well expect I can't figure out how to get it on the external display without cloning. To be fair, I it would be cool to get a rockin' custom Linux distribution running the whole thing (I'd totally make it look like LCARS...), but since I do use it for mild gaming, that wasn't really an option anyway. Plus, my research indicates that touch support for Linux is barebones at best, especially with handwriting recognition (something which Vista absolutely shines at). Instead, I'm using VirtualBox to do Linux work, which even lets me use the stylus in Linux with no problems.

Using the machine as a tablet is pretty much everything I hoped it would be, in no small thanks to Vista's touch support. Vista comes with Windows Journal for hand writing documents, which works well enough, though I use tend to use Office OneNote instead because of its organizational abilities.


It's easy to write notes, diagrams and keep them all together. I'd like to set up some sort automatic note backup for important documents though. I love reading PDF's and E-books, I switched to Foxit reader over Adobe though, I find it works better with the touch screen and Adobe was crashing on me a lot. I also frequently use it in tablet mode just for general browsing, if I don't have to do a lot of text input. And even for text input, you have a couple of options. Usually, when the focus is in any sort of text box, an icon pops up allowing you to use the tablet features to enter text. I was quite shocked how easily Vista could recognize my (considerably bad) hand writing, without even running the training samples. There's also an on screen keyboard which I'll switch too from time to time, though to be fair for any long amount of typing, I'll convert to notebook mode.


I prefer hand writing when jotting and working though ideas so I can incorporate diagrams, etc, but prefer typing more formal notes (such as summaries, etc). Now, I can have both together and well organized. I could pick up using the stylus for touch input almost instantly, though I find using my finger a challenge and needing some practice: scroll bars for instance are hard to use unless you use your fingernail, as is anything small like tray or tool bar icons. Nevertheless, I do find myself often using the touch screen controls instead of the touch pad even in notebook mode, especially if I'm sitting up and its on my lap. In addition, it can be hard to "drag" things with your finger since you have to press a bit hard which creates more friction, thus it's tougher to move your finger. Note that there are two ways you can calibrate it: either for finger or stylus. Unfortunately you don't seem to be able to use both at the same time: if you calibrate for touch, your stylus is less accurate, and if you calibrate for stylus (like I usually have it), your touch is less accurate.

Here's some handwriting in Onenote:


Viewing a webpage (my blog! :)


Vista does do a few odd things with the screen: the rotate button always rotates counter clockwise, though I'd prefer it to rotate clockwise. It's also always trying to enforce what orientation it thinks it should be in instead of what I want it in (for example, I'd like it to automatically go to portrait mode when converting to tablet, instead of landscape like it insists on). It should either be controllable, or just let me choose the rotation by hand. Another quirk is that sometimes one of my "power/network/volume" icons will mysteriously disappear on boot and I have to restart to get it back. When turning on the external display, sometimes I have to click the command twice for it to actually activate, which I find odd. I do love that the remote simply sends KeyPress messages to the WndProc, so I can easily write support for it into my own programs such as my media player.

Summary:

Main Pros:

* Sturdy build
* Powerful machine for all around use
* Touch/Tablet features are fantastic
* Gigabit Ethernet and wireless N
* Media remote/video out

Main Cons:

* Heat issues
* Poor viewing angle
* Heavier than I'd like for use in tablet mode

I am mostly happy with the machine so far and hope I'll get a lot of use out of it. I'll keep my blog updated on new information about it if I have any to share! Thanks for reading, hope this review might help some people out in the future. Take care!