1. 8

    If you find yourself writing (or debugging) bash (or sh) you should use shellcheck as well https://www.shellcheck.net/

    1. 3

      Great advice, shellcheck is awesome.

      I always use shellcheck, and all of my bash scripts start with

      set -euo pipefail

      Together those two things save me from so much frustration!

      1. 4

        I can’t help but point out that should be #!/usr/bin/env bash. But good work on the set statement. Sorry ;)

        1. 3

          Well, I guess it depends. I mostly write shell scripts for my job as sysadmin, and I prefer to use /bin/bash for those. Not all systems are fully under my control, and /usr/bin/env bash would mean that I’d be at mercy of the PATH variable. Since I know that I have system bash available in /bin/bash I prefer to hardcode that.

          For more portable scripts, or for scripts in other languages, yes, then I’d use /usr/bin/env.

          1. 3

            Another thing I like to do is to fail fast; avoid trying to do error handling unless there’s a good reason to do so. It’s often just as good to just fail hard and log what went wrong.

            I sometimes add a trap for the ERR signal, which causes bash to call the trap function upon exit:

            A trap on ERR, if set, is executed before the shell exits.

            Something like this:

            declare -ri             \
                    EXIT_SUCCESS=0  \
                    EXIT_WARNING=1  \
                    EXIT_CRITICAL=2 \
            declare -i EXIT=$EXIT_UNKNOWN
            declare STATUS='UNKNOWN - Exit before logic'
            function _exit() {
              # Status and quit
              echo "${STATUS}"
              exit $EXIT
            trap _exit ERR

            This ensures that no matter how the script exits my exit handler function will always get called. The particular snippet above is from an Icinga check I’m writing right now :)

            1. 1

              From my live NixOS system:

              bb010g ~ % file /{,usr/}bin/bash
              /bin/bash:     cannot open `/bin/bash' (No such file or directory)
              /usr/bin/bash: cannot open `/usr/bin/bash' (No such file or directory)
              1. 2

                Yes, which is why I wrote that for more portable scripts I’d use /usr/bin/env ;)

                (…that does exist, doesn’t it?)

                I’ve played around with Guix a bit, same thing there. But the systems I manage are neither GuixSD nor NixOS, so my approach works just fine for my purposes.

      1. 3

        Will have to find some time for going over this. I’ve been reading about Ambrose’s work on typed Clojure for a long time, but haven’t yet played around with it.

        Couldn’t help laughing at the first paragraph of the acknowledgements:

        I first touched down in Bloomington ready to start my graduate career — that is, until my puzzled cab driver Juannita informed me with a gasp we were in Bloomington, Illinois. She kindly agreed to drive me to IU, a 12-hour roundtrip — a humbling start to graduate school.

        1. 1

          I display the exit code from the previous command if it’s not 0, which is really nice. Other than that I have a timestamp and user- and hostname, and a shortened cwd.

          $ this command does not exist
          Command 'this' not found, did you mean:
            command 'thin' from deb thin (1.7.2-1)
          Try: sudo apt install <deb name>
          127 09:14:17 runejuhl@managua:~/opt
          $ ^C
          130 09:14:24 runejuhl@managua:~/opt
          $ echo omg
          09:14:28 runejuhl@managua:~/opt
          $ ( echo omg && exit 2 )
          2 09:14:38 runejuhl@managua:~/opt

          Since I live and breathe git I once wrote some ugly oneliners to get the git status into PS1. It prints branch name and status for unknown, modified and added files. It uses colors too, so a modified file is a red 1M while an modified and added file is a green 1M:

          09:15:08 runejuhl@managua:~/projects/clj-journal:master:v0.2.5-1:1??
          $ git status
          On branch master
          Untracked files:
            (use "git add <file>..." to include in what will be committed)
          nothing added to commit but untracked files present (use "git add" to track)
          09:15:14 runejuhl@managua:~/projects/clj-journal:master:v0.2.5-1:1??
          $ echo hello >> project.clj
          09:15:24 runejuhl@managua:~/projects/clj-journal:master:v0.2.5-1:1M1??
          $ git add project.clj
          09:15:28 runejuhl@managua:~/projects/clj-journal:master:v0.2.5-1:1M1??

          The gist of it is this:

          parse_git_branch() {
            git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/:\1/'
          parse_git_status() {
            git -c color.status=always status -s 2> /dev/null|sed -r 's/[ ]?(\x1b\[[0-9]{2}m)([^ ]+).*/\1\2\x1b\[m/'|sort -r|uniq -c|sed -r 's/[[:blank:]]+([0-9]+) (.*)/\1\2/'|tr -d '\n'|sed -r 's/(.*)/:\o033\[00m\1/'
          parse_git_tag() {
              (git describe --tags 2>/dev/null | sed -r 's/(.*)/:\1/') || :
          function print_git() {
            [[ -z $branch ]] && return
            echo -n "${branch}$(parse_git_tag)$(parse_git_status)"
          print_last_result() {
              [ $l -ne 0 ] && echo -en "\033[01;31m$l\033[00m "
          PS1='$(print_last_result)\t ${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00;33m\]$(print_git)\[\033[00m\]\n\$ '
          1. 3

            I was playing around with Ferret and Arduino recently. Here’s a sample: https://github.com/runejuhl/ferret-keyboard. I’ve played around with an ESP8266 and a NodeMCU too, and found some DS18B20 1-wire temperature sensors too.

            Maybe I’ll have a go at porting an Arduino C++ 1-wire library to pure Ferret. Tried doing it in the Clojure codebase of Ferret by “just” using the C++ library, but it’s was a bit hairy…

            Other than that I’ll probably take the kids to Copenhagen Medieval Market. A few too many mass-produced souvenir trinkets for my taste, but the kids’ll love it.

            1. 0

              It sounds like an interesting article but basically none of the code snippets work without JS turned on, something I’m not willing to do.

              1. 3

                The source is all available here: https://gist.github.com/stopachka

                1. 1


              1. 1

                Neat, thank you for posting this.

                …and to answer your question: rarely, but I actually have a task at hand where I might turn to it.

                1. 2

                  Any Mozilla employees/Firefox developers around? What’s the chance of this being merged into Firefox if a proper patch is made, along with all the other bits and pieces necessary to be able to select key bindings from about:preferences?

                  Nice work JordiGH :) I’d love to have emacs keybindings everywhere.

                  1. 2

                    about:preferences seems very unlikely. Maybe you could find someone on IRC supportive to the cause to allow this in about:config?

                  1. 9

                    Earlier this month I finished the game I’ve been working on for a bit over a year (which is already available on itch & will have its steam release in mid-February). I was planning to wait until I got ~100 sales (to guarantee I’d make back the money I spent on assets & on the steam application token) before starting on a sequel, but I’ve been bursting with ideas for mechanics today so I will probably start planning the sequel more concretely this weekend – perhaps even starting on character designs & plot.

                    I’m also continuing to go through research materials for my next book. I got a copy of Raskin’s The Humane Interface recently, and I’ve been reading that recent history of PLATO, The Friendly Orange Glow. I’m not planning to cover PLATO in the book since I don’t think there’s an emulator around for it, but I expect reading about it will spark some ideas.

                    1. 3

                      Link to the game please!

                      1. 3
                      2. 1

                        Any details about the game? Links to more info? Genre? Linux? Multiplayer?

                        Don’t quite have the time for games that I used to, but if it’s a puzzle/coop 2d/adventure that runs on Linux I might not be able to help myself…

                        1. 2

                          Sorry to disappoint, but it’s a VN (a kind of narrative-focused variation on the 2d adventure game popular in Japan). It does run on Linux.

                          1. 1

                            DDLC 2? :-)

                            1. 2

                              I started this before DDLC came out, & was a little concerned because they both played with the player / player character divide & with meta (specifically, both incorporate things VN players normally do outside of the game as part of the game’s mechanics). But, they’re different enough to not be really comparable.

                              There’s more overlap with another thing that came out shortly after I started, the movie Happy Death Day. Luckily, the tone is very different, & the only overlap is within the pitch (which really acts as a frame story in MfoM).

                              1. 1

                                So, what’s the games namem I’d love to try it out. Especially since it’s from a fellow lobster. :-) Pretty please.

                                1. 1

                                  It’s called ‘Manna for our Malices’.

                                  The sequel, if I end up making it, will be called ‘The Book of the Damned’, to continue the Charles Fort theme.

                      1. 2

                        I’m still waiting for GNU Taler (previously discussed here)…

                        1. 3

                          I’m very curious about RISC-V track and want to go the Rust, Security, Infra Management and Container talks.

                          Does anyone recommend a talk/speaker? I heard that some rooms are small and you need to arrive early if the room is full you can’t sit on the floor because of security stuff so basically you will lose the talk.

                          1. 3

                            True, I remember from my 2017 visit that it can get very busy, depending on how interesting the talk description is. Most rooms follow the “nobody sits on the floor” rule, but I also attended an introduction to open-source FPGA programming where literally every square meter of the floor was filled with people. But yeah, show up early to be safe.

                            (I can’t help you with the speakers though)

                            1. 3

                              Yes, FOSDEM is notoriously bad at predicting turnout for smaller rooms. They don’t seem to base room allocations on current demand or “hotness” of a topic, but base it on historical attendance, meaning newer or newly popular topics get a small room and are often at capacity all the time, with queues building up in the hallway.

                              Not trying to disrespect the organizers - I’ve attended FOSDEM since 2004, and I love it. Organizing an event like this is hard and they only have unpaid volunteers to organize.

                            2. 2

                              Some rooms are extremely crowded and some are not. If you can’t find a spot there’s live streams that you can watch. Instead of doing that though, I prefer to just find something else that sounds interesting. The streams are online shortly after FOSDEM ends, and I prefer seeing talks live while I’m there.

                              The FOSDEM Companion app is nice for finding talks on a whim, and it has links to streams and a map of the site. Find it at https://f-droid.org/en/packages/be.digitalia.fosdem/

                            1. 3

                              …and if you don’t want to install socat or finger, you can query it easily using Ruby:

                              require 'socket'
                              lob = TCPSocket.open('typed-hole.org', 79)
                              lob.puts 'lobsters'
                              puts lob.read
                              1. 4

                                You can use netcat, which I believe comes standard with all unices:

                                $ echo lobsters | nc typed-hole.org 79

                                1. 9

                                  …or just do it with plain bash? :)

                                  ( exec 3<>/dev/tcp/typed-hole.org/79; echo lobsters >&3; cat <&3 )

                                  (run it with the parens to create a subshell so that the file descriptor is closed automatically)

                                  1. 1

                                    You win :)

                                    I learned something new today, thanks!

                                    1. 1

                                      Holy crap – bash can do TCP? shiver. Now that I’m aware of that, I’m never switching from ksh :P

                                      1. 1

                                        I take it you haven’t seen this HTTP server implemented in pure bash? https://github.com/avleen/bashttpd/blob/master/bashttpd

                                        EDIT: and a fork with more feature here: https://github.com/AjankeFoundation/bashttpd

                                1. 7

                                  …and if you don’t want to install finger, you can query it easily using socat/nc/whatever:

                                  echo lobsters | socat -t 10 stdio tcp:typed-hole.org:79
                                  1. 2

                                    A bit late to the game, but let me chime in as well:

                                    My daily driver is a Lenovo ThinkPad T460s. M.2. SSD upgraded and 16 GB RAM added after I bought it. I saved some 40% of the list price by buying it refurbed on eBay. Prior to T460s I’ve had T440s, X230, X200 and have handled a fair share of different models in a support role in a previous job. They’re sturdy, easy to repair and take apart and usually have good Linux support.

                                    I’m currently looking at the Lenovo A485 which is basically a T480 with AMD Ryzen instead of Intel Core. They’re a bit too pricy for me at the moment (even more as my T460s is still perfectly adequate), but I’m hoping I’ll stumble upon a refurbished one on eBay some time within the next year.

                                    Buying from eBay is highly recommended if you’re in Europe. In my experience, with my last three laptops bought that way, you save a fair bit off the list price, the warranty is usually world-wide and with the Global Shipping Programme you can pay any import tax in advance. Haven’t had a problem so far.

                                    1. 11

                                      I’m helping a friend write the software for a little gadget that lets kids enrolled in a local dance school unlock the front door with RFID cards (a “smart lock”). We already made a similar gadget that just registers their presence, now we’ll hook up another Raspberry Pi to the same database, with a card scanner and a 12V relay for the door’s magnetic lock.

                                      1. 4

                                        Interesting. I’ve been meaning to do something similar at home. I’ve got a few Raspberry Pies collecting dust, assorted electronics, bread boards and relays, and I recently bought an electric door strike plate. My idea is to mount it to the back entrance door to our apartment so the kids can open the door with their own RFID tags.

                                        We live in an apartment building and the keys that open the apartment doors are ~80 USD a piece, which is a bit steep for something that may easily get lost (and rekeying all the locks is probably a lot more expensive). Instead the kids could each get a key that only unlocks the outer doors in the building (~30 USD) along with an RFID tag, which would be much easier to replace.

                                      1. 6

                                        This could have used a “(2006)” suffix to the end of the title. I was excited, but the last NEWS entry on that page is nearly 12 years old :-(

                                        1. 4

                                          There’s an ongoing effort to create a browser (frontend) in Lisp: https://github.com/atlas-engineer/next

                                          1. 2

                                            I would say eww is probably closer to Closure in that it’s implementing a full rendering engine, not just wrapping webkit in yet another UI: https://www.gnu.org/software/emacs/manual/html_mono/eww.html

                                            1. 1

                                              Oh, absolutely, but I got the feeling that Closure tried to do a more feature complete browser, whereas eww seems closer to a text-based browser with a few bells and whistles.

                                        1. 34

                                          I’m impressed by the lack of testing for this “feature”. It may have a huge impact for end users, but they have managed it to ship with noob errors like the following:

                                          Why is www hidden twice if the domain is “www.www.2ld.tld”?

                                          Who in their right mind misses that, and how on Earth wasn’t it caught at some point before it made it to the stable branch?

                                          1. 11

                                            url = url.replace(/www/g, '') - job well done!

                                            1. 21


                                              What’s really eye-opening is that comment just below wrapped in the pre-processor flag! Stunning.

                                              1. 9

                                                Wow, so whoever controls www.com can disguise as any .com page ever? And, as long as it’s served with HTTPS, it’ll be “secure”? That’s amazing.

                                                1. 5
                                                  1. 5

                                                    Not just .com. On any TLD so you could have lobster.www.rs

                                                  2. 3

                                                    If I may ask, how is this worse than url = url.replace(/www/g, '')? If anything, the current implementation use a proper tokenizer to search and replace instead of a naive string replace.

                                                    1. 2

                                                      That’s just my hyperbole.

                                                2. 10

                                                  Right, the amateurishness of Google here is stunning. You’d think with their famed interview process they’d do better than this.

                                                  On a tangential rant, one astonishing phenomenon is the helplessness of tech companies with multibillion capitalizations on relatively simple things like weeding out obvious bots or fixing the ridiculousness of their recommendation engines. This suggests a major internal dysfunction.

                                                  1. 14

                                                    To continue off on the tangent, it sounds like the classic problem with any institution when it reaches a certain size. No matter which type (public, private, government…), at some point the managerial overhead becomes too great and the product begins to suffer.

                                                    Google used to have a great search engine. It might even still be great for the casual IT user, but the signal-to-noise ratio has tanked completely within the past ~2 years. Almost all of my searches are now made on DuckDuckGo and it’s becoming increasingly rare that I even try Google, and when I do it’s mostly an exercise in frustration and I spend the first 3-4 searches on quoting and changing words to get proper results.

                                                    1. 5

                                                      Large institutions collapsing under their own managerial weight is more of a ‘feature’ in this case.

                                                      1. 1

                                                        What are a few examples of queries for which DDG produces better results than Google?

                                                        1. 2

                                                          I’m not able to rattle off any examples, sorry. I’ll try to keep it in mind and post an example or two, but don’t hold your breath :)

                                                          I’ve been using DDG as my primary search engine for 2-3-4 years now, and have tried to avoid Google more and more in that same time frame. This also means that all the benefits of Google having a full profile on me are missing from the equation, and I don’t doubt that explains a lot of the misery I experience in my Google searches. However, I treat DDG the same and they still manage to provide me with better search results than Google…

                                                          In general every search that includes one or more common words tend to be worse on Google. It seems to me that Google tries to “guess” the intent of the user way too much. I don’t want a “natural language” search engine, I want a search engine that searches for the words I type into the search field, no matter how much they seem like misspellings.

                                                  1. 1

                                                    Sounds like a good time to finally set up my bouncer. If only there were one that had good Emacs compatibility.

                                                    1. 4

                                                      I just run weechat on a server and connect to the weechat relay with weechat.el. There’s a few bugs in weechat.el (e.g. nicks go out of sync) and some things missing (e.g. nick list), but that’s a small price to pay for replacing another standalone app with emacs :)

                                                      1. 1

                                                        I did this at the beginning but quickly switched over to ZNC because of bugs like that, the inability to have per-client history rollback, and other little details… I still use Weechat half the time on the client side though :) (I also use Textual on macOS, and Palaver on iOS).

                                                      2. 1

                                                        Znc is what I use with erc

                                                        1. 1

                                                          I’ve been trying to set this configuration up for half a year now, but I never get anything I’m satisfied with. The ZNC documentation is quite bad and confused, imo. And when I manage to set it up, even using ZNC.el it won’t work with IRCnet. Switching between multiple servers is another annoyance.

                                                          But maybe I’ve just messed up somewhere.

                                                        2. 1

                                                          I used to use znc, seemed to work just fine with ERC.

                                                          Now I use weechat (a bit more features, nice Android app), again with ERC. There is weechat.el, but I prefer ERC (connecting to what weechat calls an “irc relay”, instead of using the weechat protocol). I use https://gist.github.com/unhammer/dc7d31a51dc1782fd1f5f93da12484fb as helpers to connect to multiple servers.

                                                          1. 1

                                                            Ive used znc with Circe, works great

                                                            1. 1

                                                              What did you find in Circe that made it better than ERC or Rcirc?

                                                              1. 2

                                                                In case it’s useful - I used to use ERC, and I switched to Circe long enough ago that I can’t exactly remember, but I think the issue was that I wanted to connect to both freenode and an internal IRC server at the same time, and ERC made that awkward or impossible to do. It may well have improved in the last 5 years though.

                                                                1. 2

                                                                  It was easy for me to setup and use so I stick with it. Never tried those other two

                                                            1. 5

                                                              If you’re already using emacs, nothing beats magit IMO. Extremely powerful, extensible (i.e. magithub for Github integration and in active development after a successful Kickstarter campaign by maintainer Jonas Bernoulli. Highly recommeded!

                                                              1. 1

                                                                Agree. I think magit ranks up pretty close to my favorite piece of software ever. Everything is so efficient it improved the way I commit code. Rewriting is so nice.

                                                              1. 3

                                                                A snippet for your .emacs:

                                                                (if (version< emacs-version "25.3")
                                                                    (eval-after-load "enriched"
                                                                      '(defun enriched-decode-display-prop (start end &optional param)
                                                                         (list start end))))
                                                                1. 2

                                                                  can anyone explain why I would be interested in this? or provide some context? otherwise this just seems like a badly written teaser ad.

                                                                  1. 37

                                                                    The ThinkPad line has a long history of being known for build quality and reliability, particularly in the era when they were built by IBM, before being sold to Lenovo. This was epitomized by a ThinkPad that survived a fire. Additionally, in the older era of Linux driver compatibility, where buying a laptop was fraught with peril, ThinkPads had a reputation of being a safe bet. They would reliably work, or could be made to work with minimal tweaking. There is even an entire Wiki dedicated to this.

                                                                    There is an insane aftermarket for still-working, 2010-era ThinkPads, especially those that can run without Intel’s Management Engine. People have gone to great lengths to upgrade these with newer CPUs (that they were never designed for), higher resolution screens, and all sorts of other interesting and inspiring upgrades.

                                                                    A lot of devotees (ala Apple fans) look back fondly on the earlier era of ThinkPad hardware, and in doing so focus (rightly or wrongly) on some of the aesthetic aspects of the laptops of that era:

                                                                    • No focus on thinness at the cost of processing power and battery life.
                                                                    • A 4:3 screen aspect ratio.
                                                                    • The logo itself (again, this is part emotional aesthetic, part rational).
                                                                    • The particular texturing of the trackpoint (“keyboard nub mouse”).
                                                                    • The particulars of the keyboard layout, and the keyboard feel being of high quality.

                                                                    So on and so forth. You get the idea.

                                                                    Two-ish years ago a half-joking product designer (engineer?) at Lenovo wrote a blog post asking what people might want in a “Retro” ThinkPad. The post went viral, so they did a followup of 4 surveys asking people for opinions on the specifics of what it would mean for a ThinkPad to be “retro” to them. Sort of saying “Okay, we went viral, that’s cool, but it was just a poorly-thought-out brainstormed idea. What do you people really want?”

                                                                    I’m looking for these supposed leaks right now, but based on this post its safe to say the idea is that they are actually following through on a production model based on those surveys.

                                                                    On a personal note: I am a ThinkPad fan, but not quite the devotee that many others are. During eras when the hardware was not to my liking, I have purchased elsewhere. I do enjoy my X1 Carbon 3rd Gen (from 2015) but the last time I used one before that was 2008. Oh, and this is definitely one of the coolest laptops keyboards I have ever seen.

                                                                    I could see an argument, however, for this not meeting Lobsters’ bar for a quality topic of discussion. It’s not even a proper release of any sort. More of a psuedo-product announcement via acknowledgement of a leak.

                                                                    1. 12

                                                                      There’s a certain nostalgia factor which I think overlooks the actual tangibles. Thinkpads, the X1 carbon line especially, have indeed gotten thinner and lighter, but it hasn’t been all bad. Here’s a T60 review for comparison: https://www.pcmag.com/article2/0,2817,1933653,00.asp

                                                                      You can literally stack two X1 carbons on top of each other and they’re still thinner and lighter than a T60. Despite this, the T60 has only a 5:15 battery life. I doubt people are actually clamoring for a laptop that weighs twice as much and gets half the battery life, but “they don’t make em like they used to”. And while the T60 has a 4:3 1400x1050 screen, even in the vertical that’s less pixels than 2560x1440. At $2599 (in 2006 dollars!), that’s a bit spendy.

                                                                      For more fun, the T40 review: https://www.pcmag.com/article2/0,2817,924264,00.asp Back when turning off the wifi was how one ran a proper battery test. All this can be yours for only $3399.

                                                                      At the time, the Thinkpads were marvels of engineering, so I’d say that contributed significantly to their mystique. But familiarity breeds contempt. When everybody has a sweet laptop, nobody has a sweet laptop. Carrying a laptop, of any sort, just doesn’t signal serious baller to everyone in the room like it used to.

                                                                      I mean, it’s not like super expensive super powerful laptops are entirely extinct. You can buy the Acer Predator with 64GB RAM and dual GTX 1080 graphics and quad nvme SSDs. http://www.anandtech.com/show/11532/acer-predator-21-x-laptop-with-curved-display-now-available-only-300-to-be-made Just in case today’s other laptops are too thin and light for your taste. :)

                                                                      1. 4

                                                                        Where the older Thinkpads really shine is their durability. Old Thinkpads and those from the last twoish years have magnesium cases, but for a few years after Lenovo took over the line they used plastic for the main body, which I think is where a lot of the “Lenovo ruined the Thinkpads” sentiment comes from. I have a 2012-vintage plastic Thinkpad, and definitely doesn’t survive Sudden Loss of Altitude near as well as the T60’s.

                                                                        Also the year after mine they switched the keyboard to some chiclet crap, which they haven’t had the sense to un-break yet.

                                                                        1. 5

                                                                          Unfortunately for you, I think Lenovo has a lot of market data that morons like myself actually prefer the new keyboard now that we’ve used it for a bit. :)

                                                                          1. 2

                                                                            Everyone’s entitled to their preference, especially when it’s wrong :). With luck, they’ll make the retro keyboard with the same mount as the newer laptops so they can be swapped out.

                                                                        2. 1

                                                                          Real IBM ThinkPads have soldered RAM, soldered CMOS battery, and no roll cage.

                                                                        3. 3

                                                                          This is spot on. I bought my first MacBook in late 2013 when I needed more processing power than my 2007 Core2 Duo T61 wouldn’t do the job anymore. I upgraded that laptop from 2 to 4 to 8gb RAM, from a 60gb HDD, to a 256gb HDD, to a 240gb SSD. When the battery had hundreds of cycles on it and was only around 50% of its original capacity, I bought a new unused one on eBay for $70 and it was like new.

                                                                          I gave it to my mom when I got my MacBook. She loved it for how it always just worked, up until it conked out a few weeks ago. 10 years.

                                                                          Man, I loved that laptop.

                                                                        4. 8

                                                                          My main machine I use regularly is a 2009 Thinkpad X301 which I use to SSH into a newer Thinkpad which has a much faster processor and more RAM, but a terrible 16:9 screen and a dramatically worse keyboard. Being able to have the equivalent chassis of an X301 but with a non-glossy screen that’s bright enough to use outdoors would basically be the best of both worlds.

                                                                          1. 6

                                                                            That’s hilarious. Do you carry both around with you?

                                                                            1. 2

                                                                              I leave the new one at home and have my router set up with port forwarding and dynamic DNS.

                                                                            2. 2

                                                                              For years I only bought tiny, slow laptops (various eBayed Thinkpad X-series, and later an 11-inch Macbook Air) and used them as basically SSH clients to my desktop Linux box. I’d probably still be doing that if I hadn’t ended up with a couple work-issued Macbooks Pro.

                                                                              1. 1

                                                                                My main machine I use regularly is a 2009 Thinkpad X301 which I use to SSH into a newer Thinkpad which has a much faster processor and more RAM, but a terrible 16:9 screen and a dramatically worse keyboard.

                                                                                Considering how dire the X301’s panel is, that’s an indictment of modern ThinkPads there.

                                                                              2. 4

                                                                                The first blog post and the subsequent ones give a good insight as to why ThinkPad fans are ecstatic over this. Have a look at the comment section as well, there’s loads of good comments on why a retro ThinkPad would be awesome.

                                                                                Can’t believe that it’s already been 2 years since that first blog post. Got a T460s (and have had X200, X230 and T430 and serviced quite a number of other models) and while it’s a nice laptop it doesn’t quite live up to my expectations.