GPD Pocket 2 Review – Unboxing and First Impressions

If you’re like me, you’ve always thought it would be super cool to have a tiny, pocket-sized laptop that was every bit as capable as a full-sized laptop. It’s just such a cool concept, having a tiny computer that’s as adorable as it is ultra-portable. This isn’t a new thing. Tiny laptops have been around for many years, the problem is that most of them suck. They are limited by either OS (Android, ChromeOS, etc) or by hardware and can’t be used reliably for much more than web browsing and watching videos. We already have pocket computers that do that just fine in the form of smartphones. Add to that cramped keyboards, lack of ports, and reliability problems… As I said, they just haven’t been great. There is an obvious market for these miniature computers, and several companies have been working to take advantage of it in recent years. The GPD Pocket 2 is the first model to pique my interest, which is why I decided to purchase and review it. It checks all the boxes for what I want in a tiny laptop:

  • It fits in my pocket. I probably won’t actually carry it around in my pocket most of the time, but you know, if I want to, I can!
  • Powerful hardware. I’m seriously impressed by the hardware in this device.
  • Designed to be used while held (as opposed to only on a table or desk).

Without further adieu, let’s dive in!

Unboxing and Setup

My Pocket 2 is the 2019 update, which features this hardware:

  • Intel Celeron Processor 3965Y 2 Cores@1.5GHz
  • 128GB of flash memorystorage
  • 7″ screen @ 1920 * 1200
  • 2×3400mAh batteries
  • 2 USB-A ports, one USB-C port (for charging)

The box had an interesting texture, it felt almost like felt, pun intended. Unfortunately, mine looks to have had something spilled or smeared on it, which sort of ruined the aesthetic… but hey, stuff happens, and it’s something that wouldn’t hurt the device inside. The box was sturdy and everything inside was well packed with a protective sleeve around the computer and a protective slip between the keyboard and screen. I was immediately impressed by the weight of the Pocket 2 – it feels expensive. Sturdy construction and quality parts lend a definite heft. The device was in perfect condition, and I spent several minutes turning it about and admiring it.

Included in the box was the charger and a brief user’s manual, detailing how to turn the computer on and push buttons and the like. I plugged it in and pressed the power button and it fired right up to the Windows 10 setup screen. Setup was quick and painless and I was impressed with how quickly Windows 10 loaded on the first startup, as well as how quickly it responded to my clicking about and opening a few random applications.

Since my purpose for the Pocket 2 is to be my “web dev on the go” device, I immediately showed Windows 10 the door and installed Linux. After research I decided to go with Ubuntu Mate, because they have a distro specifically built for the Pocket 2 that has excellent compatibility out of the box and utilizes the Pocket 2’s unique hardware. Setting up Mate was a breeze, and it did indeed work flawlessly right out of the box. I’ve spent about 8 hours futzing around with Mate settings, installing Chrome and Visual Studio Code, and working on learning the keyboard layout, and I haven’t ran into a single Mate problem yet.

First Impressions

Overall first impressions are that the Pocket 2 is awesome, definitely worth the money, and I’m excited to continue using it. It has a solid, premium feel, it’s fast, and the battery life is excellent. The optical trackpad and mouse button layout is genius and works very well. The keyboard is good enough, nothing special, but it’s rare for a full-sized laptop to have a great keyboard so I’d say that doesn’t matter. The keyboard layout is going to take some serious getting used to.

Build Quality

The Pocket 2 is heavy and sturdy. It feels like it could handle drops and bumps and keep on ticking, although I hope to never put that to the test! The keys and buttons all work well and have good resistance. The hardware control keys (sound, brightness, etc) actually felt a bit too stiff and difficult to push at first, but after using them for a while they loosened up and now they feel great. The display is mounted well and doesn’t fall open or closed if you’re holding it at a weird angle, which is great for those of us who want to compute in bed. The screen is of average brightness and sharp, really sharp, it’s really impressive that they packed such a high resolution into such a tiny screen. Side note on that: Ubuntu Mate has built-in resolution scaling to make everything easier to read. If you like reading text sized for ants this is easy to disable in settings.


I haven’t put the Pocket 2 through any real tests yet, but it’s handled everything so far (lots of messing with configuration, installing software, web browsing) without breaking a sweat. I’ve noticed no visible slowness with opening and using applications, and my taskbar system monitor shows resource load is always low. I’ll be doing a follow-up review in a month or so after using this for development work, so stay tuned for that review to see how the performance holds up to real-world use.

Battery Life

Battery life is great! I did some tests with YouTube videos at various brightness, and it looks like the Pocket 2 can provide about 6 hours of battery life for moderate use at 1/2 brightness. The screen is still plenty easy to see at low brightness (provided you are indoors), so that would likely extend the battery a good chunk further.


The optical trackpad works surprisingly well and feels like a hybrid of the standard trackpad and the “eraser head” trackpad immortalized by the IBM Thinkpad. You just slide your finger around on it and the mouse moves, with good speed and it’s easy to pinpoint what you want to click on. It does take some getting used to, but I felt comfortable with it after about an hour. Honestly, it felt easier to use than a lot of non-Apple laptop touchpads out there. The trackpad can be clicked down for left-clicking on things or even dragging them around. The top-left of the device has two buttons for left and right mouse clicking, which makes it simple to use the device in “two-handed mode”, holding with both hands and operating the mouse with your thumbs. A nice feature added by Ubuntu Mate: you can hold down the right mouse button and then use the trackpad as a scroll wheel!


The keyboard is what I would consider “perfectly acceptable” in terms of how the keys feel for typing. It’s not great, it’s not terrible, it’s just average. I’m not particularly picky about my keyboards, mostly because if it isn’t a mechanical keyboard then I’m not going to be happy with it; I just want it to function well, and if I’m doing some extended typing I can dock to my mechanical keyboard.

The only major downside of this keyboard is that the layout is not standard. this is understandable; You can’t pack a full keyboard into a 7″ laptop without having all the keys be tiny bordering on unusable, so GPD did some creative rearranging to make everything fit. All the letter and number keys are in their usual spots, so typing basics feel great. The punctuation and special keys are moved all over the place, however, and there is no right shift key. Fortunately, it turns out that I tend to favor the left shift key for most letters, so that won’t be too much of a learning curve… but the rest of the re-arranged keys will be a challenge. This is something I’ve done before when I used a Portuguese laptop for over a year. If you haven’t used one of those, the Portuguese keyboard has a similar layout to a US keyboard with some different characters and with some keys, particularly punctuation keys, in different places. I was able to adapt to that after a couple of weeks of use so I don’t foresee a problem with the Pocket 2’s keyboard.

Usability – Size

The greatest feature of this computer – the tiny size – can also be its greatest drawback. It’s tiny! The small screen size means you need to be reasonably close to easily read text, and the keyboard is cramped even for someone who memorizes the new layout. I’m also tall at 6’3″ and concerned about potential back pain problems from having to lean or hunch over more than usual due to how much lower down the screen is. On my MacBook I use a nifty stand that angles the keyboard at about 45 degrees and elevates the screen so I can sit up straight and look almost straight ahead at the screen, and it has worked wonders for my posture and allowing me to work longer periods without back or neck pain. The Pocket 2 is way too tiny for this stand, that’s for sure! I may be able to find a stand for it, but the goal here is to be ultra-portable and not carry around a lot of junk with me.

If I’m being realistic, it’s hard to see a use case for the Pocket 2 as a heavy-duty, long work session machine. I have no doubt that it could handle it, but I’m not sure that I could handle it from an ergonomics standpoint. I’ll certainly give it a chance, so stay tuned for an in-depth follow-up review in 1-3 months after I’ve had time to really put the Pocket 2 through the paces.

Thanks for taking the time to read my GPD Pocket 2 Review, and be sure to check out my other tech reviews here!

How to Stage your WordPress Site Locally (MacOS)

So you created a WordPress site and unleashed it on the world, and now you want to start making some changes. There are a lot of things you can do using the admin dashboard, but eventually, you’ll probably want to make changes that involve changing or adding actual files and code. While there are ways you can make these kinds of changes on a live site, this is ill-advised for obvious reasons. Fortunately, you can set up your WordPress site locally on your computer, using it to test new ideas and make sure they work properly before deploying them. This guide was created with MacOS Mojave 10.14.5 beta, but should still apply for most older MacOS versions. I’ll be writing another guide for Linux in the near future.


You’ll need these things in order to get your local WordPress site up and running. I’m not going to go into detail on how to set them up, but feel free to follow the links for install guides as needed.

Homebrew. Billed as “the missing package manager for MacOS”, it is a must-have if you develop on MacOS. Get it here.

PHP/Nginx. MacOS ships with PHP, with version 7.1 currently being bundled with Mojave. I recommend using the latest version (7.3 at the time of writing). You’ll also need Nginx coupled with the php-fpm extension for serving content. Fortunately all of this can be installed with Homebrew; refer to this guide for instructions.

MySQL. You’ll need this for your WordPress database. Use Homebrew for this as well, as per this guide. For the purposes of this guide, you won’t need any previous MySQL experience, but if you don’t have any and want to learn then this is a good introduction.

Valet. In simple terms, Valet is what lets you easily access your local site in your web browser, and makes it behave just like it does on the live site. It’s a powerful tool and can do all sorts of cool things! You’ll need Composer (get it here) first, and then you can set up Valet by following the instructions here.

WP-CLI. The WordPress command-line-interface is both useful and powerful, allowing you to tweak all sorts of things on your site straight from the terminal. It can be especially handy if your test site is completely borked up, allowing you to do things like deactivating problematic plugins. Get it here.

Terminal. You can certainly use MacOS’ built-in terminal, but I recommend going with a more robust alternative like iTerm2.

Get the Site Directory Files

First things first, you need to decide on a local directory where you will keep the files for your website. This can be anywhere, but your future self will thank you if you decide on some sort of organization. Make a new directory, and name it so that it matches your website domain minus the TLD (for example, “” becomes just “twirltech”.

Next, you need to copy the files for your website into this new directory. There are lots of ways to do this, including:

  • Rsync. Fast, powerful, and easy to use, rsync transfers data over SSH (many other functions). You’ll need to install rsync if you don’t have it yet, using (you guessed it) Homebrew as per this guide. Since this will require SSH, you’ll also need an SSH key. You’ll need to allow this SSH key on the server hosting your website, and if you have no idea how to do that you’ll need to talk to your hosting provider or administrator. If you get all this set up, you’ll run something like this command from your local website directory:
rsync -avz -e 'ssh -p <port number>' <remote username>@<remote server>:<path to site directory> .
  • FTP. While generally considered slow and insecure, FTP is still a viable option if your hosting provider doesn’t allow you SSH access. For instructions on how to connect via FTP you’ll need to contact your hosting provider. I recommend installing and using FileZilla using the credentials from your provider.

If you did everything correct, then your local site directory should contain all the files for your site’s WordPress install (so you should see wp-config.php, the wp-content directory, etc).

Getting the Database

You’ll need a dump of your website’s live database. As with the files, there are a lot of ways to get this file. I recommend making a separate local directory and using it to house all your database dump files.

  • From your hosting provider. Many hosting providers will have tools for downloading a database backup.
  • From phpMyAdmin. If your hosting provider gives you access to CPanel, you should be able to launch phpMyAdmin from the main CPanel interface. Then, select your site’s database in the left-hand column, click on the Export tab, and click Go – this will download the database dump as a .sql file in your browser. (Note: This works great for smaller databases, but can be unreliable with very large websites).
  • SSH + Rsync. Again, lots of ways to do this, and if you know how you probably won’t be reading this guide. In a nutshell, you’ll first connect to your web server with SSH, then export the database (using either mysqldump or wp db export), then use Rsync from your local machine to copy the file down.

Setting up the Database

Now that you’ve gotten your hands on your database file, it’s time to set that up in MySQL. (At this point, you should have already created a database user. Since this is a local setup, you can safely use just one database user for all of your locally staged sites). You’ll need to run some MySQL commands to set up the database. Important: the semicolons are a part of the commands.

Start the MySQL command line interface:

mysql -u <username> -p

Create a new database for your site, naming it whatever you want.

create database <name>;

Select the database you just created.

use <name>;

Import the database file that you downloaded in the previous section. Replace <path> with the full path to the database file.

source <path>

We’re done here, so just type exit to get out of the MySQL interface.

Next, in your terminal, cd to the directory where your site’s files are (this is the directory that contains wp-config.php). First, open wp-config.php and update it with the database user, database name, and database password for your setup. Save and close the file. Now you have a few terminal commands to run from this directory.

Update your local database to use the new .test TLD that Valet will create. replace your-site with whatever your site domain is. Of course, if your site doesn’t use a .com ending, then replace .com with whatever your TLD is.

wp search-replace your-site.test

Tell Valet where your site files are located, and what the site domain is. Do not include .com, .test, or any sort of ending.

valet link your-site

Secure your local site so that it will load over HTTPS.

valet secure your-site

Did it Work?

Fire up your web browser and navigate to your-site.test. Hopefully, your website loads, looking the same as it does live!

Greetings, World!

First post, thanks for reading, and all that jazz!

I am building my website using the 2019 starter theme provided by WordPress, along with the new Gutenberg editor. I made this decision for two reasons, the first being that I have never actually used a built-in WordPress theme, much less used the new Gutenberg editor. As a developer, I have built and contributed to a good many themes, but since none of my clients used a WordPress starter theme, neither have I. I haven’t used Gutenberg for reasons that will be obvious to any WordPress developer or site administrator; Gutenberg, the new “block editor” that ships with WordPress starting in version 5.0, has a reputation for being buggy, difficult to use, and being “a solution to a non-existent problem.” In fact, my first encounter with Gutenberg was when I upgraded a client site to WordPress 5.0 and the site frontend was broken in several areas. Fortunately, I was able to install the Classic Editor plugin (disabling Gutenberg) and everything returned to normal. If all it takes to break things is the presence of the Gutenberg editor, then (in my opinion) it should not be used even if it does bring some cool new features to the table. However, the WordPress team has made it clear that Gutenberg is here to stay, despite the tremendous outrage from the WordPress user and developer communities. It is entirely possible that Gutenberg works great once you know how to use it – after all, this statement is true for just about any third-party theme, or even the Classic editor. Even if Gutenberg really is just bad, I will benefit more from learning how to use it and being able to clearly articulate why (or why not) it should be used.

My second reason for choosing 2019/Gutenberg is time, or rather the lack thereof. In addition to being a freelance developer, I also have a full-time job, a spouse, and two pets to keep me busy – and attempting to maintain some semblance of social life takes care of any remaining free time! Originally, I planned to go all-out on my own website: everything would be custom, custom theme, custom plugins, super cool layout, revolutionary features, something that would accurately showcase my talents! Of course, these things take time and lots of it. As the months rolled by and my website remained undeveloped, I eventually realized that I simply don’t have the time to go crazy with over-developing my own website. On top of that, why should I? I already have plenty of other sites and applications that showcase my work.

This got me thinking further: What purpose does my website serve?

  • To showcase my work. This can be accomplished with a “Portfolio” page.
  • To tell people about myself. This can be accomplished with an “About Me” page, and perhaps also a “Resume” page.
  • To host my blog. I journal frequently, sometimes in a physical journal and sometimes using a Google Drive folder. Sometimes I write about personal things and I won’t be posting those here. Sometimes I write about work experiences, new things that I am learning, stuff I’ve built or fixed, or just thoughts about the world. I’d like to be able to share some of those with the world at large, especially if they may be useful to someone else who is facing similar challenges.

And there you have it! Keeping these purposes in mind, I shall build my site with Gutenberg, themed with 2019, and chronicle my adventures in the blog. Thanks for reading, and of course comment anytime if you want to share your thoughts!