Laptop buyer's remorse
A couple weeks ago I bought a
Hewlett-Packard TouchSmart tm2-1070us Notebook. This is a laptop with a touch-sensitive screen, that can swivel around and fold down over the keyboard to turn the laptop into a tablet.
I thought it would be a cool thing to help with drawing comics, since I could draw right on the screen. Also, I haven't bought myself a computer since 2002 (every computer I've used since then has been one lent to me by whoever I was working for at the time). I thought maybe it was time to have a computer of my own, to separate my work stuff from the rest of my life. Finally, I also wanted to get away from Mac, as Apple has been turning evil lately and I don't want to support them any more.
I started regretting the purchase almost immediately. I brought it back to Fry's (return policy: full refund minus 15% restocking fee within 14 days) less than a week later. Should really have done more research first.
Here's a list of what was wrong with this computer.
The hardware sucks
There's no optical drive. I didn't realize this until I got home. I guess I should have read the box more carefully or asked the salesman, but it didn't even cross my mind that you could sell a computer without a CD-ROM drive these days. So yeah, it needs an external CD-ROM drive to install software or play a music CD or anything.
Even with an external CD-ROM drive hooked up, I couldn't get it to boot from a CD. I went into the BIOS and made that drive first in the boot order, but it didn't seem to make any difference. This meant I couldn't install Ubuntu.
The trackpad is a nightmare. It's the kind where the bottom part of the trackpad is meant to double as the mouse buttons, but the whole surface is touch-sensitive and pressure sensitive. This means it's extremely easy to
click when you wanted to move, or move when you wanted to click. (The Macbook Pro gets this right: it has the button separate from the trackpad, so you push the button with your thumb while moving the pointer with your fingers. You can drag two fingers to scroll. It works great.)
On the HP, supposedly I can drag two fingers to scroll, but sometimes it works and other times it doesn't, and I can't figure out why. Sometimes when I drag with two fingers the mouse pointer stays put and turns into a four-directional arrow symbol. I don't understand what this means. Supposedly I can move two fingers apart or together to zoom in or out, but that is also extremely flaky, sometimes working and other times not.
But it's not just the advanced features that don't work. When I go to click on a close button, half the time I miss because the act of pressing down on the mouse button part of the pad moves the pointer off of the button, so I do something else instead. When I try to put an insertion point in text, the point randomly jumps around, sometimes selecting big chunks of the text. Sometimes it brings up the context menu as if I had right-clicked. Dragging a scroll bar is fraught with perils. If I try to hold the button down with my thumb and move the pointer with my index finger at the same time, that means I'm touching the pad in two places, which means unpredictable behavior. The pointer might randomly jump halfway across the screen, or it might not move at all.
I have no idea what to expect when I touch this track pad. All my habits are dangerous now. It's at the point where I'd rather pick up the stylus and poke the screen with it than use the track pad, even if I'm in laptop mode and just trying to click a link.
Actually drawing with the stylus on the screen is pretty good, but using it to click links or select from menus or otherwise interact with a standard GUI is very annoying because the part of the interface I'm looking at is covered up by my hand and the pen, and because the standard GUI rendered on a laptop screen has targets that are physically very small, and sometimes the stylus is registered as a couple pixels off from where I think it is due to my viewing angle. I miss targets a lot. But in tablet mode, that's the only way to click things. (It's still better, slightly, than using the trackpad.)
There's a toggle button on the right edge of the laptop between the power button and the SD card port, which turns the wireless connection on and off. I discovered this by accident, because this button is in the perfect place to be hit by accident when you with the thumb when you're just trying to hold the computer in tablet mode. And then the next time you go to load a web page it suddenly doesn't work, and you don't know why. Now that I've figured out this button, I have to carefully avoid hitting it, forever. Why does this button even exist? Why would you put an "accidentally turn off my wireless internet" button on the hardware? (There's actually TWO such buttons, since the f12 key ALSO does the same thing). The cases when you need to turn off wireless internet on a laptop are exceedingly rare, and can easily be handled through software controls.
The back of the screen and the area below the keyboard both have this stupid spirally abstract cloud pattern etched into them. It's not printed, it's not a sticker that you can peel off, it's actually permanently etched in, like with a laser or something. Who asked for this nonsense?
Probably due to the weight of the touch-screen hardware, the machine is very top-heavy when in laptop mode. It's hard to balance on my lap because it keeps wanting to fall over backward.
The software sucks
I remember when you'd buy a new computer and it would boot to a BIOS screen, waiting for you to configure the drives and install the operating system. It was a little more work to set up, but it gave you a pleasantly minimalistic setup at first. You started with the bare minimum and added things as you needed them.
These days you have to spend the first couple of days just de-gunking a computer from all the ad-ware and useless crap that's pre-loaded at the factory before you can use it. Bahhh. Everything is popping up dialog boxes at you, begging for your attention,trying to get you to buy Norton Antivirus or whatever other crap software paid Hewlett-Packard for advertising space. You configure your network settings once in the Windows wizard that pops up, and then as soon as that's gone a Hewlett-Packard wizard takes over and asks you the same questions all over again, except it's also trying to get you to buy stuff.
HP has started using this horribly inappropriate "Nightmare before Christmas" font on all their stuff, with the slogan "The computer is personal again!" Whatever, guys.
There's a button on the edge of the screen that rotates the screen orientation 90 degrees each time you press it, so that you can use the tablet in portrait mode or landscape mode. That's fine. But for a while, every time I touched this button, a program called "BumpTop" would take over my screen for no reason I could understand. It would launch into some kind of stupid tutorial and I would close it. By the fourth or so time that BumpTop came up and took over my screen, it said "You are now done with the tutorial". Which of course I wasn't, but it had apparently been advancing through the tutorial each time I closed it. I finally uninstalled BumpTop (actually Sushu uninstalled it for me to get me to stop bitching about it).
BumpTop is an amazingly useless piece of showing-off-ware. I wrotea separate rantabout BumpTop and why it's useless and fundamentally misguided.
Besides BumpTop, other useless software that showed up to beg for my attention included two wretched things called "HP Advisor" and "HP TouchSmart" which are installed and taking up space in the windows taskbar by default. Hp Advisor appears to be a combination of adware and redundant interface to things you can do through the Windows control panel. HP Touchsmart is an overblown and redundant full-screen touch interface for browsing multimedia files. Whatever. It also has a 'browser' button which launches IE full-screen, and - this is the weird part - Hulu, Netflix, and Twitter buttons. Those are websites; I don't need a special button to launch them, though I'm sure they paid HP nicely for the privilege. The weirdest one is Twitter; when I think of things that would benefit from a full-screen touch-enabled interface, Twitter isn't anywhere on the list. What possible purpose does this serve?
Windows 7 (which, amusingly, has an internal verison number of 6.1) appears to be, at least, no worse than Windows XP; it just sucks more memory and randomly changes parts of the interface around so you have to relearn everything for no real benefit. The hourglass is now a blue ring exactly like the ones the moai heads spit at you in Gradius. Every icon in Windows Explorer now gets a little check box when you select it, which is just confusing; it turns out that this is an alternate way to select multiple files at once, if you
don't want to shift-click, control-click, or drag a box around the files. That would have been a great innovation for, say, 1990, when the conventions of selecting icons were still being established, but it seems like a weird thing to start messing with now.
I do appreciate that Windows 7 didn't blue-screen-of-death on me five times in the first day like Vista did. That's a definite improvement.
I actually like the Windows 7 feature where you can drag a window to the top of the screen to full-screen it or to one side of the screen to half-screen it. The latter makes it easy to compare two windows side by side, which
is the only real use case for non-fullscreen windows anyway.
My plan was to wipe Windows 7 and install Ubuntu, but since I could never get the laptop to boot from a CD-ROM (see above), I couldn't do this.
Manga Studio really, really sucks
I'm splitting this part into a separate blog post because there are so many reasons that Manga Studio sucks.
Suffice to say here that the unreliable trackpad input, the clunkiness of Windows 7, and the horrible UI failure that is Manga Studio all combined to make an absolutely miserable, frustrating, hair-pulling out experience that had me doing more swearing and nerd-raging than drawing.
The only way to make it usable would have been to hook it up with an external CD-ROM drive and an external mouse (thus defeating the purpose of a tablet computer), wipe Windows 7 in favor of Ubuntu (providing I could figure out how to make Ubuntu compatible with the touchscreen and pressure-sensitive stylus input), and replace Manga Studio with some other software. But GIMP is equally horrible interface-wise and Photoshop doesn't run on Linux, so I don't even know what software that would be.
That's why I declared the whole thing a failed experiment and brought the laptop back to the store.
Manga Studio: The Epic List of UI Failures
I've heard people defend Manga Studio as "power-user software", like "It's for experts, and it's super powerful, so of course it has a learning curve".
No. I know all about making tradeoffs between learnability for beginners and efficiency for experts. I know what software looks like when it takes the path of "hard to learn but very efficient and powerful once you learn it" (like, say, Emacs) , and this ain't it. The Manga Studio interface just gets stuff wrong. It's egregiously bad for no reason. Most of these usability problems would harm experts just as bad as they harm beginners.
Here's my ever-expanding list of UI mistakes and bugs in this wretched application, organized by sub-categories.
- Can't open a file that's not the right file type; you have to import it. Can't import a file if you don't have a page open. Why not just create a page for the user in this case?
- (Windows version only): That horible window-inside-of-window interface is back and ready to party like it's 1995!
- Every time you open the damn thing it makes a new blank document, and when you go to close it, it pops a dialog to say the blank document has been changed. No it hasn't, you liar.
- It asks me if I want to save every time I change pages. (THE ANSWER IS YES. DON'T ASK ME, JUST DO IT). Oh, maybe it's a good thing to not save changes, because you throw away my undo history whenever changing pages, which means I can't go back to a page and undo something. The right behavior would be to always keep undo history while continuously auto-saving.
- Many layer options, such as the color depth and raster/vectorness of the layer, can only be set when creating it. If you mess up, you have to delete the layer and do it again! (not actually true, I found how to change this).
- I've got layers called "Layer" and "Layer" automatically included underneath the bottom layer of my drawing and I don't know why.
- If you make a layer tones instaed of grayscale by mistake, there's no way to change it back afterwards. You'd have to redo it all. This is extra annoying since tone is the default, it's not displayed anywhere once you get past the 'create layer' dialog box, and it's never what I want.
- To make panels, you go into the general tab of the tool options window for the shape tool and click a tiny cryptic icon to turn on a special mode and then drag the rectangle tool to create a folder of layers. (Why are panels not a top-level tool of their own, given that this is called manga studio? And given that some of the top-level tools are much more specialized and useless?)
- The "panel ruler cutter tool" which exists to chop one panel into two panels along a straight line (cuz you do that all the time, right?) deserves a slot in the main tool pallete. (While the panel tool isn't even a tool, it's a suboption of Rectangle.)
- When you drag a corner of a panel, it moves JUST THAT CORNER, turning your panel into an ugly trapezoid. It doesn't resize while keeping it a rectangle like you would expect. I still don't know how to resize a panel while keeping it rectangular, which you would assume would be the default.
- When you have a panel selected, it's got a red border around it that looks just like the red border for resizing selections, so you think it's to resize the panel, but no. Dragging it does nothing to the original panel -- but sometimes randomly creates new tiny panels elsewhere on the page! I'm still not sure what it's for, but hey! Why not use the same visual to represent two completely different concepts! That's not confusing or anything.
- Giving me tones when I want gray. Making it impossible to eyedrop up a
tone (unless you turn on a checkbox in the eyedropper tool options window, and sometimes that even doesn't work. I still don't know why).
- Two different types of color picker in the same window, which disagree with each other. When you eyedropper a shade of grey, it changes the bottom scale but leaves the selection in the top color picker alone. When you click a shade of grey, it changes in the top color picker but not in the bottom scale. This means that the actual color is dependent on which interface you used last, and you can't tell by looking at the window what color you're going to get when you paint something.
- Sometimes the paint bucket turns into a "No" symbol and won't paint. Why's that? Oh, somehow my text layer got selected.
- There's a copy of my colorz layer called "Colors Copy" that I didn't create.
- To eyedrop a color, I have to know what layer the color is in and have that layer selected. Sometimes that still doesn't work; the eyedropper
can fail for a lot of reasons I still don't understand.
- Paint bucketing in a secondary layer with "browse all layers" turned on, i can very easily dump paint through all my lines without anything visible happening - I only find out later when it's to late to undo that I now have a duplicate of the lines layer in the color layer, so when I try to erase something in the lines layer it doesn't seem to erase and I think I'm going crazy.
- Not obeying my choice of font, because the "Use Style" checkbox is checked by default and it apparently means "Ignore whatever else I say". This is an amazing interface innovation: Having the obvious parts of the interface disabled by default until you dig through dialog boxes to find the magic check box that's overriding them.
- No way to search fonts or type the name of the font you want; you have to scroll through the menu one by one. Oh, but there are "up" and "down" buttons next to the font selection that let you blindly go through the alphabetical list one at a time. How would those ever be useful?
- When I try to change the font size of text that's already typed and selected (as opposed to setting the font size first and then typing), sometimes it works and sometimes it doesn't. I can always resize text by dragging the border around it, but then I don't know how much I'm resizing it by and so I can't match it with the size of the other text. I really want to enter a point size.
- Also, when I type into the "text size" field to set the size, that field keeps focus (with the modal "text properties" dialog box still up) so now when I try to type my actual text nothing happens because it's trying to put the ltters into the text size field and it's rejecting them. You have to notice that the text size field has focus and then de-focus it by clicking other random parts of the dialog box. And no, if you dismiss the dialog box you go out of text edit mode.)
- Double clicking to select a word in a line of text selects the whole line and not just the word, unlike every other application in the world.
- Having a way to make thought clouds, but no way to make the "bubble trail" from the thought cloud to a character's head! I know this isn't used that much in Japanese comics but there are so many other obscure and useless options that I'm surprised this basic one isn't included. You have to draw each circle manually if you want the bubble trail.
- Yes, thank you for making my speech bubble transparent, randomly. Transparent speech bubbles that let the grey background show through are just so useful. Thanks for having no controls for me to change this and no clue to why it happened. (Sushu figured it out: the text layer I created got inserted under the color layer, for some reason, so the colors were being drawn (translucently) over the top of the text).
- The edit menu has both "copy" and "Copy to another applications" (sic). Aside from the grammar, why are these separate options? Why can't you make one copy command and have it work right no matter where I'm copying to?
- You're in a hidden mode whenever a properties dialog box is open. It looks like a floating modeless dialog box, but it prevents you from doing anything to your picture. Also you're in a hidden mode when you're importing a picture or editing text - you won't understand why nothing sems to work until you click "OK".
- The scroll bars stretch way out into a grey void outside your picture. What posible reason is there to scroll out there?
- I try to copy an image on one page to another page. I select it and make sure to have all the layers hilighted, then do a copy, and... whaat? now I got duplicate text layers on this page? Which are rotated relative to the visible ones? What did I do? I can't undo it! (Solution: close file and reopen without saving).
- When you try to draw and nothing happens, it could be because there's an
offscreen selection somewhere. Or it could be because you have the wrong layer selected. Or it could be any number of other reasons I haven't figured out. Anyway, I'm constantly having to stop and figure out why my drawing tools aren't drawing. It's a never-ending adventure with Manga Studio!
Things I DO like about manga studio (a much shorter list)
- Single key shortcuts for switching tools and increasing/decreasing pen size
- "coloring inside the lines": When you have a selection up, you draw only inside the selection. This is very powerful combined with the magic wand to select an area of color and the fact that you can select on one layer and then draw (still bound to selection) on another layer. You can also polyline select and invert selections. There's a bit of a learning curve to figuring out how to use all these tools together, but they are a powerful combination.
- Infinite levels of undo (unfortunately these go away as soon as you switch pages, bah)
- Being able to use multiple translucent layers, and vary the opacity of each layer individually, lets you get some powerful effects (like the rain streaks, the reflection outside the window, and the pool of light from the window all in my most recent comic)
- I like that I can set a panel boundary, then pull in an image from elsewhere into the panel, and it's clipped at the panel edge, but the rest of the image is still there, just hidden, so I can easily resize and position it until it's clipped the way I want. (And I can also pull out individual layers such as dialog balloons and put them above the panel layer so they spill out the edge).
- You can enter some text and then hit "generate dialog balloon". It creates an object that can be resized, and you can add straight or curved tails and reposition them wherever. It's got some weird quirks but the underlying idea is exactly how you want a dialog balloon to behave and is a lot better than any of the ways I tried to do them before.
Let Go of your Nerdrage (or: Why the 'Worse' Technology Wins)
I just finished a small PHP project for my wife's family business. I've tangled with this codebase before. Like many legacy PHP projects, it's a nightmare of copy-pasted code, misspelled variable names, multiple versions of the same file living in different subdirectories, load-bearing posters, etc. I'm not sure the original developers knew what a function was.
Years ago, when last I tangled with this codebase, I raged at it for days. I'm afraid I was rather unpleasant to be around. I raged at the barely-competent contractors who had hacked it together with no regard for readability or maintainability, but the greater half of my ire was reserved for the design of the PHP language itself that leads inexperienced developers to sail onto these reefs.
PHP is infuriating to good programmers because it's a fractal of bad design. Many of its features and standard library functions are flagrantly misdesigned for no reason. Design trade-offs I can forgive, but things like the inconsistent capitalization and order of arguments across PHP standard library functions is just wrong. There's no advantage to it - it wouldn't have cost them anything to apply some consistency to the standard library, and PHP would be a lot easier to deal with if they had. You can hammer in nails with the side of it, sort of, but why not use a tool that's designed right in the first place?
And yet! PHP is quite possibly the most successful programming language in history, if you count by number of projects written in it that are actually used every day. Maybe Excel macros, if you consider them a programming language, could give PHP a run for its money. I used to think that PHP was only popular because it comes pre-installed on most web servers, but that begs the question of why PHP was in so much demand that web hosts would include it. Despite its manny flaws, PHP runs most of the web.
Obviously there is a huge disconnect between what programmers think is "good" and what customers want.
"Good" to a programmer means clean, elegant, orthogonal, modular, easily maintained, well-documented. No extraneous moving parts, any subsystem can be swapped out and replaced, interfaces behave consistently, and all actions are reversible.
If the technology that nerds thought was good won in the market, we would all be running FreeBSD, or better yet, Plan 9, on our reduced-instruction set chips (the Intel x86 architecture is hopelessly crufted up with obsolete backwards-compatibility modes). We'd be running programs written in a beautful language like Erlang or Haskell, and instead of the lousy hack that is the World-Wide Web, we'd be connecting to Xanadu with its bi-directional links and live transclusion. If HTTP even existed, we certainly wouldn't be using it to cram rich application interfaces through port 80! That's designed for hypertext only, dammit.
Instead, the average computer is a jumble of commodity hardware running IE (or, these days, Chrome) on top of Windows (probably XP) in order to connect through HTTP to Facebook (built on PHP) and log in using cookies (a hack to get around the statelessness of HTTP) to look at YouTube videos (using the proprietary Flash plugin because the browser fails to support video natively). To a programmer who lets themselves think about it, this is a tottering Jenga tower of kluges on top of kluges.
The nerd favorite loses every single time. From Windows to the Web to PHP, the worst technology (from a nerd perspective) always wins.
There's a piece of wisdom among marketers: the customer doesn't care how "good", in some abstract sense, your product is. They only care whether it solves their problems.
Notice "solving the customer's problems" doesn't appear in the list of things a programmer thinks are good. That's because most programmers are mainly concerned with how hard it is to fix bugs in their codebase; somebody else in the company gets paid to worry about customers. But a definition of "good" that doesn't consider whether it solves customer problems is fallacious, like a definition of "price" that doesn't consider how much somebody's willing to pay for something. The programmer's idea of "goodness" is really more like "technical purity".
Is there a pattern to the "worse" technologies that end up winning? If I squint I think I can see one.
If you already had DOS, it was easier (and much cheaper) to run Windows on top of DOS than to switch to a Mac. If you were already using a web browser every day it was easier to use a web application than to install a desktop application even if the webapp wasn't quite as good. And if you were already hosting an HTML website and needed a few dynamic features it was easier to drop some PHP tags into an HTML page than to rewrite the whole thing in a Python web framework.
All of the "worse" technlogies offered something very important: an easy upgrade path from something somebody was already using. The klugy solution can be bolted on to whatever you're already running, and it might not work the best and it might not be pretty, but it lets you get your stuff done. The technically pure solutions ask you to throw everything out and start from a clean slate. No wonder they're not popular!
Of course the current popular trend is mobile-phone apps. Which are horribly designed from a software architecture perspective. Phone apps are the ultimate in siloed functionality: they're mostly single-function and there's no way to get data from one to another, so you're putting your whole UI into a whole different mode for every feature you want to use. Plus you can't link to them so discovery is hard, and on iPhone Apple has a stranglehold over the sole distribution channel so they get to decide what software you are or aren't allowed to run.
It's all terrible, but having these features on an object that you already carry in your pocket is convenient enough to overwhelm the drawbacks for most people. Apps, like Windows and PHP, are a bolt-on to something people were already using.
This time, when I approached the project for my wife's family business, I kept all this in mind, and tried to make peace with PHP. I still wouldn't recommend choosing PHP for a new project, but there's no sense nerd-raging about it. Their site is done in PHP, they needed some features added, and I could either do them in PHP or I could refuse to help them at all. I took a deep breath and accepted it. It's not like rewriting their website in Python is going to save the polar icecaps, or even get the business a single new customer.
It's just software.
And that is when I realized that, in Brian's words, I have rejected software as a path to enlightenment.
My suffering came from attachment to the idea that people "should" be using something that fits my idea of well-designed. I am learning to let go of that attachment. People use what solves their problems, and their problems are not the same as my problems. The market will always be dominated by stuff I think is terrible from a technical perspective. I'm now trying to make peace with that fact. It doesn't matter what software other people choose, compared to the important things in life, like how people treat each other. This is a big change in my attitude towards programming work. Past Jono from five years ago was all about the technical purity.
Beautiful and well-designed code is better than crufty and unmaintainable code, all other things being equal, but we shouldn't think of beautiful code as an end in itself. We've got to remember that it's still just a tool. Whether beautiful or ugly, it ultimately has to serve a human purpose or it's a waste of time. Sometimes the human purpose is not served by pursuing technical purity; sometimes it's best served by just doing what the client wants and hacking another feature into their mess of PHP.
We really shouldn't look to computer code for creative expression or spiritual fulfillment. Code is ephemeral. I mean, yeah, all human endeavor is ephemeral, but code is even more ephemeral than that. If you paint a picture or write a song it can be enjoyed by future generations. Your most beautiful code probably won't even run five years from now. It will just be ones and zeros rotting in an archive somewhere, broken by some operating system change or browser upgrade, unless somebody cares enough to maintain it.
Lately I'm thinking I want to start a sustainable business of my own so I can be self-employed. That will mean wearing two hats - programmer, but also small-business manager. When I face choices about what language to use or what platform to develop for, I can listen to the programmer and take the technically pure choice, or I can listen to the businessman and follow the users.
So, it's like, I hate smartphones, I hate "social networks", but that's where a lot of the potential users are. If it's a choice between hating smartphones or becoming successfully self-employed, maybe it's time to let go of my hate.