Krzysztof Kowalczyk is the developer of SumatraPDF and writes about open source, Go, C++, and building solo software businesses.
HN links it for his retrospective on 15 years of SumatraPDF and his notes on Go web servers and HTTPS; commenters also cite his idea list and solo-dev diary.
I think Conan and Modules will make c++ more popular in the future.
It is a behemoth of a language. Very hard to master and it is still too easy to produce difficult to debug errors. So it will be very important, that the language changes to address these.
But in working with c++ day to day I feel the most annoying things are indeed dealing with dependencies and headers. It can be a pain to set up a complex c++ project on a new machine. Even with Conan it can still be a pain because configuration management is a mess in c++.
As for headers I can’t wait to see them rot in hell. Some people say that they can help you reason about your Program, but this is a very small positive point. Too many times I had problems with includes which only worked because a Translation Unit included some other header beforehand. I once read a blogpost of the developer of SumatraPDF where they describe that they never include anything directly[1]. This can be an improvement for compile time. But if someone else is working on your code or has to refactor it, it can be impossible to read yourself into it or track any compile time error. If one would only use modules these errors would simply not exist.
[1]https://blog.kowalczyk.info/article/96a4706ec8e44bc4b0bafda2d9ba502f/extreme-include-discipline-for-c-code.html
Not only that, being so adamant about using Arch Linux would make you look ignorant/partisan. Now don't get me wrong, I'm more likely that most to make a stink about not being able to use Linux on the job, but you can still get most of the important tools on a Windows box: Unix utilities (cygwin), nice tabbed terminal (Console2), GVim, Emacs, Perl, Python, Ruby, etc. One tool I lean on heavily is the Silver Searcher (granted, you could could install Perl/App::Ack) and I was able to even quickly find a Windows port of that just now: https://blog.kowalczyk.info/software/the-silver-searcher-for-windows.html
Given the availability of most of the good stuff on Windows, I don't think my workflow would change very much if I were forced onto a Windows box right now, apart from the occasional bummer about some bleeding edge software being unported or some library assuming Mac/Linux. Indeed, it was being forced to work on a Windows machine for a couple years that made me switch from TextMate to Vim (it made sense to become proficient with a single cross-platform editor).
The startup speed for this app is really good. From my quick testing it seems like it is as fast or slightly faster than npp. I am surprised that QT can be that fast. I recall this line from the Sumatra PDF developer on why he chose win32 only:
>The only way for one person to even attempt cross-platform app is to use a UI abstraction layer like Qt, WxWidgets or Gtk.
>The problem is that Gtk is ugly, Qt is extremely bloated and WxWidgets barely works.[0]
To be fair, a PDF reader and a notepad editor are two different things, and startup speed is only one metric which is the only one I tested. But I always assumed npp was also using win32 APIs only for similar reasons. (I don't actualy know what GUI toolkit npp uses.) And "bloated" could perhaps mean a lot of things. Perhaps QT takes more memory or something. But I always assumed npp's unbeatable speed was due to native APIs.
[0] https://blog.kowalczyk.info/article/2f72237a4230410a888acbfce3dc0864/lessons-learned-from-15-years-of-sumatrapdf-an-open-source-windows-app.html
Users do notice speed issues in apps and websites.
The NNGroup has done studies with users to gather reactions to slow websites in 1997 and 2010. They remain relevant in 2021 to both apps and websites: "Users really care about speed in interaction design" [1]
A few weeks ago someone on HN shared the reflections of the developer of SumatraPDF - a native Windows PDF reader that is small, lightweight and performant (all the things that Adobe Acrobat Reader is not).
From the developer Krzysztof Kowalczyk: "I believe being small and seemingly fast was a big reason for adoption...there will never be a time when users want bloated and slow apps, so being small and fast is a permanent advantage." [2]
[1] Website Response Times (2010): https://www.nngroup.com/articles/website-response-times/
[2] Lessons learned from 15 years of SumatraPDF : https://blog.kowalczyk.info/article/2f72237a4230410a888acbfce3dc0864/lessons-learned-from-15-years-of-sumatrapdf-an-open-source-windows-app.html
I run 3 websites written in Go (http://blog.kowalczyk.info/article/uvw2/Thoughts-on-Go-after-writing-3-websites.html)
Those are clearly not Facebook scale servers but for majority of people: you don't need this or any other such solution.
Here's what I do for deployment. I have a fabric script that:
- copies the new executable to the server
- kills currently running executable
- starts the new executable
The worst that can happen is that a few connections will get dropped and that's perfectly fine 99.9% of websites. You don't control internet so the users will get broken connections all the time for reasons you can't eliminate. They shrug and hit reload button.
Complicating things to avoid few seconds of downtime was not worth it for me and rationally, probably not worth it for most.
Calibre can be configured to use the OS defaults for reading specific file extensions. The option is buried somewhere in the preferences menu of Calibre.
On Windows, OSS SumatraPDF will read pdf, epub, djvi, fb, chm and more. You can preset 2up fullscreen & other options, including the carnival yellow default background. It's minimal and can be locked down more than Acrobat, but has still had a handful of public security vulns (much less than Acrobat), http://blog.kowalczyk.info/software/sumatrapdf/free-pdf-reader.html
On iOS, Marvin is an epub reading app which integrates well with Calibre and includes screen temperature adjustment (similar to Fl.ux) for reading at night.