Geoff Greer, a programmer and creator of the Silver Searcher, writes about developer tools, Vim, ThinkPad hardware mods, and software.
HN commenters link his posts on the modded ThinkPad X62 and X210 from 51NB when discussing classic ThinkPad upgrades.
FLAVOR: Ubuntu Gnome Desktop
HEADLINE: Have first class support for hibernate
DESCRIPTION: There are a few problems i noticed with hibernate
- During installation you don't get notified that you need a swap partition of the size of your ram if you want to hibernate (moving partitions around is a PITA)
- There is no menu to set close lid to hibernate, the go to option seems to be edit /etc/systemd/logind.conf and if that doesn't work the internet has various other solutions that might work
- During upgrade form 15.10 to 16.04 this broke and i never got the hibernate functionality to work again
HEADLINE: Improve battery life
DESCRIPTION: The difference with windows is SIGNIFICANT. Watch the barchart at [1]
HEADLINE: Fix tracker-store and tracker-miner-fs eating CPU.
DESCRIPTION: Seems that this is also a quite common issue [2], why doesn't this just work out of the box?
HEADLINE: Help support some 3rd parties get their software packaged and put in the distro.
DESCRIPTION: I haven't been able to use f.lux and i think a small utility like that would enhance the overal desktop experience, so would be nice if ubuntu team supports this a little bit. (The alternative apps which should do the same didn't work for me). The point is that the OS should offer at least 1 package that just works. Now this seems to be only done with packages that are like "gnome official", where 3rd party packages sometimes fill a gap.
HEADLINE: Inventing a new desktop experience is great, but keep the…
I don't know if people will switch per se, but people will be less inclined to purchase the latest and greatest from Apple, and less willing to invest in new things like AirPods or iWatch.
If my MacBook Pro dies, which I really hope it doesn't because it's great, and I want to back up my iPhone to local storage, I might get the cheapest Mac Mini I can and use it as a storage device. Yea, I can't move something like that to Linux as long as Linux mobile backups are not great. No, I won't pay for iCloud, and I won't use my MacBook Pro dying as an excuse to buy a new MacBook Pro or an iMac like I might have before. On the side, I may be purchasing a thousand dollars in PC parts and running Linux on desktop, and using my MacBook Pro to just SSH into my desktop using OpenVPN and dynamic DNS through AWS Route 53, and using it as a mobile battery-powered shim, which can be much more easily commoditized. Maybe my MacBook Pro dies and I use a Thinkpad as a replacement to SSH into my desktop, and I learn to love Thinkpad: https://geoff.greer.fm/2019/03/04/thinkpad-x210/
I should hope Apple doesn't want that. Apple should want me purchasing the Mac Pro or the iMac Pro, and maybe complement that with the MacBook, and some AirPods and an iWatch to boot. The buying decision shouldn't be like pulling teeth, and since it is, I think Apple has lost a good deal already.
I will say my personal pain tolerance for this kind of stuff is low. I will personally invest a great deal of energy to…
Continuing my streak of posts regarding preference which likely apply nearly only to me[1], I will gladly take on this question!
As with the others, I should reiterate that I am a niche user and that the things I want will likely not be wanted by everyone else.
1. Terminal-only (^Z is still something I want/need)
2. Not ncurses (as much as I like ncurses and what it did for TUIs, it's got too many pain points and short-comings to make sense lately).
3. Configurable/Extensible/Scriptable through the host language or one DSL (i.e., allowing a ton of different languages for plugins (I'm looking at you vim, ಠ_ಠ) is a SadTime™).
Given this and (2), I would be tempted to say I'd prefer this editor to be written in Haskell and use Brick[2]; there is at least one editor that attempts this [3].
4. Incredibly stripped-down core functionality with officially maintained extensions for likely-to-be-wanted features (e.g., syntax highlighting).
This is not because I don't want syntax highlighting (I definitely do), but rather the recognition that one size does not fit all and that making the whole system as configurable as possible is often a huge win.
Note, this cannot be done at the expense of performance (which is why I would be tempted to say that accomplishing this sensibly would require (3) be accomplished through the host language (and that it would add another strong argument for Haskell)).
5. Modal (One of vim's greatest triumphs is the brilliance and simplicity of function…
I went from a stolen 2015 MBP to an X230 (modified with an X220 keyboard) to a new MBP. With the thinkpads, the smaller screen and lower resolution will take some getting used to. Running a customized window manager in Linux is the best solution when it works but you shouldn't discount the amount of time you will lose to tinkering and random breakages.
My personal belief is that, for a working dev, MacOS is still the best deal running. The fact of the matter is that it will always work and any new software you want to install will have a well documented how to. Even if you don't want to run MacOS, I'd still probably recommend buying an MBP and dual booting linux on it. Thinkpads are great, the x220 keyboard is probably the best keyboard ever put on a laptop, but the screens are horrible, you will notice the RAM and CPU shortage, and battery life was an issue. Further, the form factor is not as small as an MBP.
If you are going down the Thinkpad route, the X62 is an interesting option custom made by an enthusiast group in Shenzhen. [1] Otherwise, Hackaday wrote a fairly modern Thinkpad buyer's guide [2]. One thing I would note is that upgrading the x230 keyboard to the x220 keyboard is trivial and only requires a jeweler's screwdriver and a few new parts (about $70). You can also upgrade the x230 screen to an HD screen but that is a significantly more complicated upgrade.
[1] https://geoff.greer.fm/2017/07/16/thinkpad-x62/
[2]…
One of the things I miss about older laptops is the keyboards. I would love to buy a laptop that is built like a PowerBook G4 or a ThinkPad X61 but with modern displays and modern internals, and with extra bonus points if it has user-replaceable batteries and user-serviceable storage and RAM. I've found the Thinkpad X62 (https://geoff.greer.fm/2017/07/16/thinkpad-x62/) and X210 (https://geoff.greer.fm/2019/03/04/thinkpad-x210/) projects rather intriguing. Unfortunately I missed out on the 2017 ThinkPad T25, which I would have purchased had I not been strapped for cash at the time.
One idea that I have is for a laptop manufacturer to develop a chassis that comes with a high-resolution display and a high-quality keyboard (like those of older ThinkPads), and where the user can supply an Intel Compute Stick or a similar device for computing power. This way the chassis can be used for a long time while the user upgrades compute sticks.
I'm the author. People are asking how this thing is faster than ack or grep. Here's how:
- Literal matches use Boyer-Moore-Horspool strstr.[1]
- Files are mmap()ed instead of read into a buffer.
- If you're building with PCRE 8.21 or greater, regex searches use the JIT compiler.[2] Also I call pcre_study() before executing the regex on a jillion files.
- Ag reads your .gitignore and .hgignore files to ignore code you don't care about.
- Instead of calling fnmatch() on every pattern in your ignore files, non-regex patterns are loaded into an array and binary searched.
I wrote a couple of blog posts about profiling The Silver Searcher and improving performance. http://geoff.greer.fm/2012/01/23/making-programs-faster-profiling/ is the most informative one, IMO.
1. http://en.wikipedia.org/wiki/Boyer%E2%80%93Moore%E2%80%93Horspool_algorithm
2. http://sljit.sourceforge.net/pcre.html