Geoff Greer
geoff.greer.fm · Personal blog · on HN since 2010
Geoff Greer, a programmer and creator of the Silver Searcher, writes about developer tools, Vim, ThinkPad hardware mods, and software.
What HN saysHN commenters link his posts on the modded ThinkPad X62 and X210 from 51NB when discussing classic ThinkPad upgrades.
101HN people shared it
62linked it in comments
48stories submitted
3.6Kstory points
4 months agolast shared
2010people per year2026
Most-shared posts
- 1Why Neovim Is Better Than Vim14 people · 67 points · first shared 2015 · 9 comments on HN
- 2Thinkpad X21012 people · 1.0K points · first shared 2019 · 477 comments on HN
- 3Thinkpad X6210 people · 474 points · first shared 2017 · 253 comments on HN
- 4The Silver Searcher: a fast code searching tool10 people · 3 points · first shared 2014 · discussion on HN
- 5Better than Ack8 people · 11 points · first shared 2011 · 2 comments on HN
- 6In Defense of Richard Stallman7 people · 744 points · first shared 2019 · 607 comments on HN
- 7Software Rot (2017)7 people · 128 points · first shared 2017 · 78 comments on HN
- 8Vim's 400 line function to wait for keyboard input6 people · 300 points · first shared 2015 · 231 comments on HN
- 9Burnout is in the Mind4 people · 13 points · first shared 2015 · 6 comments on HN
- 10Gasoline Car Review3 people · 6 points · first shared 2023 · discussion on HN
- 11Character encoding bugs are 𝒜wesome3 people · 2 points · first shared 2012 · discussion on HN
- 12Oldest Viable Laptop (2017)2 people · 204 points · first shared 2018 · 287 comments on HN
- 13A couple neat things about using chemical elements as hostnames2 people · 165 points · first shared 2010 · 67 comments on HN
- 14Lscolors Generator2 people · 5 points · first shared 2015 · discussion on HN
- 15Ag (grep/ack replacement): Getting to 1.02 people · 4 points · first shared 2014 · 1 comments on HN
What HN people wrote when they linked it
Terretta · 2024-02-17
> I only have one disagreement with them. . .
> > the perfect name for a text editor in Zig is already taken: Zed
> No, it’s “Zag”. ;)
Except that `zed` contains `ed`, precursor to `ex`, `vi`, and `edlin` yet still around:
`ed` is a line editor for Unix and Unix-like operating systems. It was one of the first parts of the Unix operating system that was developed, in August 1969. It remains part of the POSIX and Open Group standards for Unix-based operating systems, alongside the more sophisticated full-screen editor `vi`.
https://en.wikipedia.org/wiki/Ed_(text_editor)
While `ag` (the silver searcher) is fantastic, Zed's more about editing code than searching code:
https://geoff.greer.fm/ag/
localhost · 2022-01-10
There's a post[1] from 2019 about a group in Shenzen who update classic Thinkpads to modern specs. It's also been mentioned here a bunch of times [2-4]. I got an email from the group just a couple of weeks ago and they're building another batch. It's a bit sketchy with the Western Union funds transfer but I'm seriously considering it. I love the build quality of the x220s that I still have here, but would love to have better internals.
[1] https://geoff.greer.fm/2019/03/04/thinkpad-x210/
[2] https://news.ycombinator.com/item?id=19246406
[3] https://news.ycombinator.com/item?id=19246406
[4] https://news.ycombinator.com/item?id=19413436
lindseymysse · 2021-11-07
Just below here someone recommended the MNT Reform. I'm curious -- it is a lower powered device with a modern GPU, so it will be an upgrade to both of our devices.
There is also this: https://geoff.greer.fm/2019/03/04/thinkpad-x210/
Which seems interesting, but the MNT seems like the better long-term option.
lqet · 2021-01-26
This is the main reason why I will stick to my modded Thinkpad X61 [0]. Small, classic trackpoint, no touchpad.
[0] https://geoff.greer.fm/2017/07/16/thinkpad-x62/
VvR-Ox · 2020-02-03
Here[0] is an interesting article of someone who got the x62 and then upgraded to the x210.
He bought it from 51NB (China) and exactly describes how the buying process including returns and repairs could be improved upon by locating stores/branches in other regions of the world as well.
If you would scale this endeavor all kinds of mods can be thought of and I see no problem to choose the one's you want to have. Think of a configuration app that let's you choose a model/chassis and then configure the TP the way you want.
I am sure it will be a great success and also more people will want some of these when they see how lousy their HP, Acer,... (up to and including new Lenovo) laptops are built in comparison. Climate debate will also lead to more people trying to get used electronics because it is more sustainable.
[0]: https://geoff.greer.fm/2019/03/04/thinkpad-x210/
xrayspec · 2018-11-18
Respectfully dude, I clicked through to your sites because I was curious to see how you apply your own design advice. It seems that mostly, you don't. Your blog [1] even employs the monochrome, typo-centric style that Butterick seems to like.
[1] https://geoff.greer.fm
bitonico · 2017-11-23
Somebody _is_ kind of doing that: https://geoff.greer.fm/2017/07/16/thinkpad-x62/ . They also mod x220s but the mod is more invasive since they require a different screen bezel.
I recently got an x62 and it's great, although you must put some effort into making linux work smoothly on it and making the screen brighter. But all in all I am extremely happy with it.
DigitalJack · 2017-11-08
Technically true, but practically worthless.
Python example:
import vim
# Show current directory in Vim
cwd = vim.eval('getcwd()')
cmd.command(':Explore %s | redraw' % cwd)
Ref: https://geoff.greer.fm/2015/01/15/why-neovim-is-better-than-vim/
mburns · 2016-04-01
Geoff Greer has a great counterpoint to that article (published around the same time):
http://geoff.greer.fm/2015/01/07/burnout-is-in-the-mind/
ggreer · 2016-01-13
I'll engage in some expectation management: ag doesn't cover all uses of Ack. I made ag because I loved Ack, but it wasn't fast enough for my needs. For the features of Ack that I use, ag is interchangeable. For features I don't use... not so much. Also, since the release of Ack 2.0, some behaviors and command line options have differed slightly.
If you want to know why ag is so fast, there's a summary in the GitHub README.[1] I've also written a few blog posts on the subject.[2]
1. https://github.com/ggreer/the_silver_searcher#how-is-it-so-fast
2. http://geoff.greer.fm/ag/#related-posts
sillysaurus3 · 2014-05-07
If anything, that post is evidence of how tricky optimization is, and how easy it is to fool yourself about what matters. It's probably best to be skeptical about mmap() as a performance optimization over reading into a buffer unless evidence demonstrates otherwise. Most OS's do a pretty good job of caching at the filesystem level, and under the hood paging is essentially reading into a buffer anyway. mmap() might make the code simpler, but it's hard to imagine it makes it faster. If it does, I'd like to understand why.
EDIT: The post was http://geoff.greer.fm/2012/08/25/the-silver-searcher-benchmarking-revi…
pmelendez · 2013-12-15
I believe that's what ack-grep[1] and the silver searcher(AKA ag)[2] do underneath.
Actually I would recommend people to give it a try to those alternatives, I haven't had to look back to grep again since I am using ack-grep (and now ag)
[1] http://beyondgrep.com/
[2] http://geoff.greer.fm/2011/12/27/the-silver-searcher-better-than-ack/
mh- · 2013-07-20
for those who are frequently searching paths with a large number of files stored on an SSD or ramdisk/tmpfs, the bottleneck is very much the CPU time.
in these cases ag is noticeably faster (orders of magnitude, in some cases), especially if you're just searching a literal and not with a regex pattern.
the author has done some really cool performance hacks, and written some great blog posts[1] along the way.
[1]: http://geoff.greer.fm/2012/09/03/profiling-ag-writing-my-own-scandir/
AngryParsley · 2012-04-13
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_algo…
2. http://sljit.sourceforge.net/pcre.html
linguae · 2020-08-03
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.
yingw787 · 2019-03-28
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…
drawnwren · 2017-12-28
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]…
slydo · 2017-04-01
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…
halosghost · 2015-09-30
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…
noname120 · 2026-01-28
I expected much worse to be honest. Vim’s inline #ifdef hell is on a whole other level. Look at this nightmare to convince yourself: https://geoff.greer.fm/vim/#realwaitforchar
rozhok · 2026-01-19
51NB. There was a blog post about it: https://geoff.greer.fm/2019/03/04/thinkpad-x210/
fsflover · 2025-10-27
And there's a reply to that: https://geoff.greer.fm/2019/09/30/in-defense-of-richard-stallman/ via https://news.ycombinator.com/item?id=21113414
1vuio0pswjnm7 · 2025-10-18
"The Silver Searcher" is a program written in the _same_ "unsafe" language as grep
This is obviously not analogous to Rust evangelism that targets projects written in C
The author claims the program is a clone of ack; ack is written in a "safe" language
https://geoff.greer.fm/ag/
https://beyondgrep.com/
tiltowait · 2024-01-10
Not the parent, but here's a blog post about it: https://geoff.greer.fm/2015/01/15/why-neovim-is-better-than-vim/
snvzz · 2023-05-15
The arguments in the character assassination campaign were found baseless[0][1][2].
But the cancelation crowd's witch hunt continues even today.
[0] https://stallmansupport.org/debunking-false-accusations-against-richar…
[1] https://geoff.greer.fm/2019/09/30/in-defense-of-richard-stallman/
[2] https://itsfoss.com/richard-stallman-controversy/
lokedhs · 2022-09-02
I can think of one specific case. At some point, it all of a sudden wasn't possibly to disable cursor blinking in gnome-terminal anymore.
It's fixed now, but it took years and absolutely no admission that perhaps they didn't handle it very well.
The entire story is outlined here. https://geoff.greer.fm/2016/08/26/gnome-terminal-cursor-blinking-saga/
lambda_tango · 2022-01-26
No ARM CPU, but there was an aftermarket conversion called the X62[0], with upgraded display and Intel Broadwell CPU. I think it's mostly been supplanted by an X201 conversion, the X210[1].
[0]: https://geoff.greer.fm/2019/03/04/thinkpad-x210/
[1] http://www.cnmod.cn/x210/
datashaman · 2021-06-09
Probably The Silver Surfer. The CLI is `ag`. Often used as a replacement for `grep`.
https://github.com/ggreer/the_silver_searcher
https://geoff.greer.fm/ag/
creamytaco · 2021-04-14
You're regurgitating easily refuted lies and malicious slander propagated by people with an axe to grind and a political agenda.
See: https://geoff.greer.fm/2019/09/30/in-defense-of-richard-stallman/