Thursday, March 22, 2018

The Hunt for a New Laptop + My New Box Setup Process

I've probably mentioned this before (or maybe it was just in one of my still "in-draft-form" posts), but it's probably well and truly time that I set up a new machine. Actually, it's probably been time to do so for over a year now, but I've managed to get by with an increasingly large bunch of external hard drives and nasty hacks (i.e. command-line args + wrapper scripts) to make Blender 2.8 runnable (due to graphics driver bugs). But, as I'll soon explain, the reason why I haven't just gone out and gotten a new machine is not so much the money/cost aspect, but rather, the time + effort cost involved in hunting down a suitable machine, and then, SETTING IT UP.

Long time readers may recall the series of posts I did a few years back when I set up the current box - first spending weeks/months tweaking Windows 8 into submission, which lead to a 3-4 month unsuccessful "Linux Experiment" (which was nominally a dual-boot setup, that was an minor marathon in itself to set up). This time, I'm not currently hoping to do another Linux experiment (yet!  Until Microsoft's Windows 10 auto-updates drive me up the wall enough to start taking nuclear options...)

Anyway, with the Code Quest looming, matters have become a bit more pressing, as I'm not keen on lugging my current box over. (For one thing, I'd need to also lug a fragile external HD along with it, if I didn't want to wait several months until I could get all my photos off my camera; also, there are those hacks needed to run 2.8 (seriously inconvenient at times), and there's too much other stuff on this box that I don't want to be lugging around everywhere).

Originally, I'd been planning on getting my first desktop tower in years (with all the scope/capacity to put whatever high powered stuff in there, plus ample room for many racks of internal hard drives, a proper "silent" cooling system, and gazillions of top-mounted USB ports) for my main/daily-driver home-office workstation, and then a not-so-critical laptop that could be used on the go. (And, by "not-so-critical", I mean, I don't care soo much about max speed + max storage + max ram + graphics performance, since my tower can serve that role instead... of course that said, it'd still have to satisfy my selection criteria below still!)

So, what exactly is it that I'm looking for in a laptop?
Essential (must have) things, in decreasing order of importance:
  • Keyboard with decent (deeper is better) key travel + numpad
    • I've learned the hard way, that you can't really compromise too much on this (though it is getting increasingly hard to find anything that is even barely acceptable these days). Besides incurring a greater typo rate, I've learned that bad keyboards (like my HP Envy's chiclet, those flat + light iMac ones, or *shudders* any keyboard made by Microsoft - in short, anything with a barely any key travel, and particularly if they respond like a brick wall when tapping out) tend to give me some pretty bad RSI issues, that can flare up within 5 minutes of light typing (and which won't clear away until the next day, if I immediately call it a day).
    • For reference, my favourite keyboards are:
      • Toshiba Satellite P200 - This is still my favourite keyboard ever, particularly since I could adopt a slightly different technique to type really quickly. (It's a pity though that they don't make these on new machines now, and/or that we can't really mount these in place of the existing builtin keyboards AFAIK)
      • Logitec K120 - This is what I use everyday now. While not as nice as the Toshiba's keyboard, this is a very nice keyboard overall (Note: I do slightly prefer the slightly older versions that were in my uni office - the keys on that were slightly less mushy/rubbery, and a bit more clicky).  IIRC, I've been using these for the past 4-5 years, and the exclusively for the past 3-4 years (including writing my entire thesis, and all the experiment/system prototypes).
    • For reference, my least favourite/must avoid keyboards are:
      • Anything made by Microsoft - I've yet to see them make a decent keyboard that isn't shallow + hard-backed and/or with weird key spacing issues that cause heaps of typos. Definite avoid.
      • HP Keyboards - Having used a whole bunch - from laptop to traditional standalones, I've realised that the feel of these is usually pretty bad. The laptop ones are usually either too mushy (with major flex around the G/H keys), or are too firm/hard (it's like pounding a brick wall with each keypress), while the standalones are generally firm + mushy (i.e. a really rubbery and resistant feel). I try to avoid these now if I can.
      • "Old Style" Mechanical Keyboards - I still have one lurking around from my first computer. After trying to type on it when I last booted up that machine, I quickly realised that as much as some people laud these things, I really hate how the keycap surfaces are so bloody tiny. It makes you feel like you have to have much more pin-precise typing. TBH, I really don't like all the scooping/contouring nonsense too much - I like my key surfaces flatter, with almost no gaps between each key.
  • 16GB+ RAM
    • For anyone who wonders why, there are 2-3 main reasons :)
      • With my current system, I have it constantly running on around 9 GB (peaking around 10.5-11 GB). Even then, I have to occasionally kill my browsers  every day or two (i.e. by which time, they'll typically be using some 3-4 GB, and starting to lag as a result). And that's still not factoring in peak memory usage with the various tools I need to run.
      • Compiling large code bases requires quite a bit of RAM - (IIRC, last time I checked a few years ago, you needed  > 1 GB to link the Blender sources - i.e. the final stage of compiling Blender, required to get a runnable executable). 
      • I do quite a bit of photo/video editing from time to time - Again, these are memory intensive applications (for obvious reasons)!
  • Lightweight (ideally in the 1.5-2kg zone, but really, < 2.7 kg will be good)
    • Having been on two back to back trips with my HP Envy (which weighs about 2.9 kg for the laptop, and probably an extra kilo or so for the massive power brick (that's the size of an actual brick!), I'm definitely keen for something lighter. It's really not much fun having to spend a few hours walking longish distances (aka navigating any airport, and/or the concourses around transit hubs to get to the next mode of transport) wearing and lugging the backpack + camera gear + large suitcase around.
      • Side Tip:  Do NOT try loading a Canon 7D into the same backpack as a 2.9/4 kg HP Envy + powerpack, and then go walking up and down stairs (or for that matter, more than 2-300m at a time). I made that mistake on my first morning in Kobe, when rushing between my hotel, the registration desk, and the talks venue (involving 4 trips up and down the 2-level flight of stairs linking the registration/talks hall). Damn.. by the end of that morning, I was totally wasted, but I still had a talk to present in the late afternoon that day! Crap.
    • (Side Note:  At least the thing only weighed 2.9 kg's... My Toshiba was even heavier - probably around 3.4 kg IIRC, but with a smaller powerpack. I nearly gave myself a heart attack lugging that up several flights of stairs in a hurry once)
  • 4+ USB Ports
    • You can never have enough of these! These days, in everyday usage, I have all 4 ports occupied (i.e. external mouse, external keyboard, external Hard Drive, and Tablet). As a result, I currently need to juggle things (usually disconnecting the tablet nowadays) so that USB sticks and my external USB Microphone (used for all the Violin Layering and voiceover recordings) can be used. Of course, with a nearly empty hard drive, I probably don't need to have an external drive plugged in all the time, but every other aspect still holds.
  • 15/7'' screen, with no major colour cast/contrast issues. Ideally is not a touchscreen.
    • I'm not as fussed about absolutely having a 17 inch as I was, since now, I'll prefer to just use a single 27 inch monitor if I'm sitting at some desk somewhere for any fixed period of time.
    • That said, having seen people working on 12 inch Macbook screens (ugh!), I can honestly say that I need something a more decent size.  (The fonts on those 12 inch screens were usually nearly impossible to see... and everything was just so tiny!)
    • What I do care about though is that the screen doesn't have some nasty colour cast (especially if it veers towards blue/purple, sickish yellow-green, or red/magenta... I might accept however one that has warm yellow/ochre/orange/brown cast).  There's nothing quite as sickening as loading up images, seeing everything look puke coloured, and then only have somewhat non-vomit-inducing colours after nearly maxing out some of the colour correction settings already.
  • Quiet fans, and minimal heat production. Does not whine when put to sleep.
    • Another bunch of things I hate about the Envy are the way that the fans make a racket within 30 seconds of any moderate CPU/disk load. It's like a high-pitched jet fighter roar.
    • Equally disturbing is how it has an off-pitched on-off-on-off whining tones when in standby - they're just loud enough to hear (especially in a quiet room), and out-of-tune enough to be annoying.
  • 2.8 ready
    • I don't want to have to apply hacks to just get Blender booting up :P  Who knows what else might glitch/fail out under pressure?
  • Not Lenovo
    • Anyone who has been following the news should know already what they've been caught doing red-handed to machines coming out of their factories.... Nope, I'm not falling for that.

Nice-to-have things in a laptop (by default):
  • Small touchpad (miles away from bases of thumbs), with 3 physical buttons (LMB, MMB, RMB). Recessed. Does not stick/drop/click when doing long-distance dragging. Edge scrolling is enabled (vs un-ergonomic/tiring 2-finger swipes).
  • Each CPU core is > 2.2/3 GHz - faster is better of course. As much as people keep insisting that multicore is that way forward for speed, most of our software is ultimately single-core bound (e.g. UI threads, etc.), so having less cores that are faster is still IMO a better experience.
  • Really wide gamut colour representation, calibrated in factory
  • Physical volume control dial (not buttons, but a dial), preferably located in an easy to reach location from the edge of the case.  (One of my favourite features from the Toshiba)
  • Physical kill switch(es) for all network radios, webcam, microphone
  • Long battery life - We're talking 10-16 hours on a single charge here, decreasing down to 7-8 hours after 3 years of usage.
  • Loud speakers (that work best to direct sound toward you, sitting right in front of the screen, not everyone else, standing outside the door)
  • Always-on Numlock (seriously, I don't know why we can't just permanently enable this, then throw away the button to toggle it). Instead, the "delete" key should be located in its place, instead of in some random location that breaks muscle memory when switching to a full-sized keyboard. 
  • Function keys working as function keys (and not "special laptop-specific media keys).
  • Overall thin profile, but still with enough thickness in the base to be comfortable to type on when placed on a flat surface (e.g. table)

What about with a desktop?
In short, the list of things here are basically everything that applied to laptops (except that we're already using a large external monitor, and external mouse/keyboard (wired)). The key point though is that, since it's a desktop workstation, it *should* be able to have "all the powerful things", instead of being crippled by manufacturer limits. So, what sort of things am I looking for:
  • CPU where each core is > 4 GHz (or at least 3 GHz) - the faster the merrier. The number of cores I don't care about still (though I'd be happy to have 8+ if I find one)
  • 32 GB RAM minimum. I'd love to get my hands on 64 GB+, if there isn't too much of a speed penalty on that
  • Disk Space - I'd like total storage space of around 8-12 TB. I'd probably set it up like:
    • A 2 TB drive for Photos / Own Video
    • A 1-2 TB drive for all multimedia - Videos/Music
    • A few 2 TB drives for various projects - Code, Animation/Film, etc.
    • A small (200-300 GB drive) for the OS. Probably a SSD for faster load times.
    • Some other external backup system (e.g. probably a NAS or two for backups)
  • Case (with top/front-mounted USB Ports) -  I'm really not too fussed about having a "fancy" looking case (though ideally, it wouldn't have too many lights attracting attention to itself). What I do care about is that there are lots of USB ports available, and that ideally, all of these are top/front-mounted.
    • I want these USB ports "top/front mounted" so that I can easily access them. Specifically, I want to ensure that my keyboard/mouse/tablet ports are also on the top of the machine, so that I can easily physically verify regularly that the cables are going directly into the machine, and that there aren't any extra attachments on any of them. 
    • I want heaps of USB ports - a minimum number would be 8 or 10 - but again, the more the merrier. For future proofing, it might be nice to have room for another 6-8 of the newer USB-C ones - not that I have any equipment using them, but you never know :)
    • Quiet Fans - There's nothing quite like constant fan noise - especially that which spools up during periods of moderate computational activity (or watching videos) to get really distracting/irritating
  • Graphics Card - I'm not much of a hardware guy, so, I'll just take whatever generally-considered-powerful card I can get my hands on here without spending too much :P
  • UPS (or something like a laptop battery, that can kick in if power is lost). Having lived through several large quakes (and hoping for no more, thank you nature in advance), it's important that your machine doesn't just cut out if the power goes off while you're working.
  • Wifi Builtin - In my house, it's not really feasible to run wires to a router, so I'd like to be able to use it just like any other laptop - wirelessly.

What about on a software level?
Remember how at the start I said that the biggest challenge was not locating the hardware (though, looking at these requirements, it is a bit of a handful), but rather, the challenge of getting the software environment configured and installed to my liking.

How bad exactly is it? Well, tonight I tallied it up, and it comes out at some 43 (!) pieces of software/packages that need to be installed - and that's still not counting the addons that need to be downloaded/enabled for each, along with all manual custom tweaks that I need to apply to each and every one of these to get them behaving in a sane and palatable way).

Here is the list:
  • Firefox
  • VLC
  • 7Zip
  • Python 2
  • Python 3
  • PyQt4
  • PyQt5
  • PyOpenGL
  • Numpy
  • Matplotlib
  • Pandas
  • Pillow
  • MoviePy
  • Audacity
  • Musescore
  • Git
  • Sublime Text
  • Vim
  • MSVC 2017
  • LibreOffice
  • SumatraPDF
  • Rust
  • Picasa
  • Inkscape
  • Krita
  • (Screencasting software)
  • CMake
  • SVN
  • GNU on Windows
  • HexChat
  • Latex  (Miktex)
  • PHP
  • Arcanist
  • Youtube-DL
  • Putty
  • EOS Utility
  • SVN
  • IrfanView
  • 7+ Taskbar Tweaker
  • Custom Theme Override
  • Wacom Drivers
  • Dependency Walker / Process Explorer
Again, don't forget that each of these needs to be located, installed, then configured.

When also haven't factored into here the process of grabbing the repo's for my standard tools and/or Blender stuff, then compiling all of those, and setting up shortcuts to access those.

There are also tweaks that need to be applied to the OS itself (e.g. turning off various Windows features, getting rid of the "Library" folders when launching a new file browser, etc.). Or if not Windows (i.e. Linux), then, there's another whole host of things that need doing there instead...

The Ultimate Machine/Setup
For me, the ultimate setup would be if I could find a laptop that satisfies all the mentioned requirements, at the desktop level of power, while still in the portable-laptop form factor, with all the physical bits and bobs. That, and the ability to basically lock down the system to prevent it the UI from changing while still being able to receive security updates - at a time that I choose (and not when the system wants), without requiring any restarts.

Is it really too much to ask for such a machine + software environment?

Or do I really need to start getting into the computer-manufacturing biz too, by launching my own firm that will sell these kinds of computers, with software that promises to not have constant auto-update mediated UI flux (and instead, offer you the option of opting in on every single UI change/feature)...

As things stand right now, it looks like I may have no other choice! :/

(In the meantime, any suggestions for computers/parts that might satisfy these requirements are welcome!)


  1. Question about using Blenders Grease Pencil:
    I saw a Music Video on Youtube where Bruno Mars Singing and Dancing and during the video you see different Drawing Strokes and Drawing Objects apears on Him and around him in White colour most!
    I know this fx is possible to made in Blender using GP tools bud HOW and Where?
    so my question is where you import a video and how to render:
    in 3D View???
    in Blenders Sequencer???
    or in the Compositor???

    here is the link to the Youtube Video so you can see what i mean!:



    1. I think i found out How after trying......!
      in Sequencer its not possible because the GP strokes not render on Video when you render in Open GL (Question WHY NOT)!!!!
      The only way is to load the Video in 3D View and Use Camera View or Top or other Views (by the way i forgot that you can import a Movie in 3D View)!!!!
      That Way your GP stokes renders on Images !