1. 3

    I’ve been on a similar journey going from VSCode to neovim. I’m using a very different set of plugins, but not too different from the author. I’ve had a great experience with coc, particularly coc-eslint and coc-tsserver for my LSP needs!

    It would be great if there was one place to find examples of these frankinvim configs. With all these features neovim could be a drop-in replacement for someone coming from VSCode or sublime.

    1. 4

      I’d like to write something book-like someday, and I’d idly mused about doing print on demand. This has convinced me that I actually don’t want to do that.

      This print work is fascinating and valuable and hard, and I don’t want to do it. I want to git push book readers_brain.

      1. 19

        Author here. You can definitely do a print edition of a book much easier than I did. I specifically chose to:

        • Hand illustrate everything.
        • Use a two-column design with lots of asides.
        • Include every single line of code in the book along with contextual location information so that readers can build up a complete program.

        If your technical book doesn’t do all that, it’s a lot easier. A lot of CS books are done in LaTeX where the process is mostly automated. It is still a decent amount of work to edit, find a copyeditor, index, design a cover, etc. If you don’t have any graphic design background, you’ll end up with a more beautiful book if you go with a conventional publisher.

        1. 7

          The asides in the margins remind me of Tufte’s books. Did you take any influence from them?

          I think I remember reading something about how he also made sure that every diagram and the text that referred to it appears on the same page? And it involves a ton of labor. Not sure if that is true but I think so.

          I’m very impressed by the craftsmanship! :)

          1. 5

            Oh, yes, I have been a Tufte fanboy for many years. :)

          2. 4

            Thanks for the reply! All of that work definitely comes across, I wish my CS textbooks looked as good as the pictures you featured.

            Side thing: I’m totally bookmarking your tile_pages script. That kind of non-text document-modification-verification tool seems super useful.

          3. 6

            I used a professional publisher, but did all of the typesetting of my books myself using LaTeX. The only difficult part was making the copyright page correspond to the publisher’s template. I wrote in a semantic markup language that happened to be valid LaTeX syntax, so for the ePub editions, I wrote a small program that parsed this into a DOM-like structure and emitted semantic HTML. I would probably just use something like PanDoc and Sile if I did this again. I did all of the diagrams with OmniGraffle (sadly, my favourite drawing program is an older version of OmniGraffle that doesn’t run on modern macOS - Omni Group went full hipster and turned their beautifully clean NeXT-inspired UIs that were a joy to use into things that looked great while posing with a MacBook in a coffee shop and are a pain to use).

            I spent a while tinkering with the typeset output because I’m a typography geek, but it wasn’t really required. I used URW Grotesk for the titles and the standard LaTeX fonts for pretty much everything else.

            Getting a good copyeditor is probably the hardest part if you’re self publishing. I worked with some fantastic ones and some mediocre ones, even with a professional publisher in the mix.

            640 pages over 15 months is a very nice sedate rate, it averages to less than 1.5 pages per day. That’s a nice sustainable pace.

            1. 6

              I’m writing a book about publishing for technical people and the interior formatting has almost been the doom of the project because I wanted an index in the print edition. As munificent says, there are much easier ways to do it depending on your particular priorities.

              My chapter about interior formatting has a recommendation specifically geared toward technical people: AsciiDoc. The format provides a good deal of power, and the tooling is pretty good — but a lot depends on what you want your end product to look like. Crafting Interpreters is a beautiful work and there’s no easy way to get that kind of format without the work (other than hiring that work out, either to a traditional publisher or independently).

              Leanpub also does a good job of giving you tooling to target ebook and print.

              1. 2

                I’m probably going to use leanpub, primarily because I have no idea what I’d want a book too look like. I just want it to be readable.

                Ironic that a book about publishing has troubles in the designing/publishing pipeline!

                1. 4

                  I just want it to be readable.

                  You can try pandoc. I use it to convert GitHub style markdown to pdf/epub. The default conversion by pandoc is good enough, but I spent some time customizing it. There are templates made by others that you can use too. That said, I haven’t done print versions, only ebooks.

                  I wrote a blog post about my set up (includes other resources at the end too): https://learnbyexample.github.io/customizing-pandoc/

                  1. 3

                    Part of the value of the book is that I’m blazing the trail somewhat.

                    There are actually a number of fine choices for people who don’t care about having an index, and there’s even a program that will add an index to your PDF file. So it’s not terrible in general. I’ve published 4 novels and that experience was quite pleasant!

              1. 10

                This might be the clearest technical Wikipedia article I’ve ever read. it reads more like a technical blog post, with suggestions to get around common issues.

                kudos to the author(s).

                1. 3

                  Legit curiosity… do “they” even teach debugging?

                  I ask while I prefer printf I recently used a data watchpoint (under a “real” debugger) to find a bug. Explaining it to colleagues, they asked “what’s a watchpoint?”

                  A just a datapoint for those wondering why I prefer printf… the answer is simply that it doesn’t have any of the friction involved with better tools (which in the embedded space can be flaky, unreliable or outright misleading).

                  1. 1

                    I went to school for CS for 3 years and not once in that time was using a debugger ever taught. My CS101 professor honestly probably didn’t know to use one, and most other professors considered squashing bugs an “implementation detail”.

                  1. 0

                    there is no malware in the extension

                    people should probably not start a habit of putting MALWARE in bug tracker titles just to get attention?

                    1. 13

                      It fetches + executes arbitrary js from a server that mimics an analytics tool. I haven’t seen yet that someone’s identified malware coming back, but there’s no legit explanation for the situtation and it’s happened before that popular extensions have been sold to people who end up using them as malware vectors.

                      1. 3

                        I’ll go ahead and say being able to fetch arbitrary js without a very good reason is itself malware.

                        1. 0

                          I’ll go ahead and say being able to fetch arbitrary js without a very good reason is itself malware.

                          1. 0

                            I’ll go ahead and say being able to fetch arbitrary js without a very good reason is itself malware.

                        1. 10

                          This article really gets to a fundamental misunderstanding I feel our whole industry has: Programming is not construction, it is design.

                          Yeah, houses rarely collapse, but structural engineers don’t expect that their second draft will be taken out of their hands and built. Or that the fundamental requirements of their structure will be modified.

                          I don’t mean to suggest that programming should behave more like construction. The value of programming is the design. Programming is the act of really thinking through how a process will work. And until those processes are really done and won’t change (which never happens) that design never stops.

                          1. 1

                            At some point I got this thought that programming can be mapped into the framework of the scientific method, as below. Later I think I found a similar interpretation in some older article so I guess I might have not been the first. Specifically, my analogy goes like this:

                            • a program ~ a scientific theory
                            • running the program (incl. via tests) ~ running a scientific experiment

                            where a program tries to model (some aspects of) some specific problem domain, and a scientific theory in e.g. physics tries to model (some aspects of) the physical world around us.

                            This seems to fit with some known aspects of programming: e.g. that tests never can confirm 100% that a program is correct, but the more of them you do the more confident you can become. Or that sometimes a program seems to have “hit a jackpot” of being a “good theory”, when new features result in only small tweaks to the program (similar as new experiments fit well in a correct scientific theory, with maybe just small tweaks to constants). And wildly different features (wildly new experimental results) may force us to ditch the model and start searching for a new one - major architectural refactoring of the code (or searching for a new theory that may still explain the old one - Einstein, Newton, or completely break it - how the aether theory was invalidated even though it gave useful results in some areas IIUC).

                          1. 1

                            I did something similar, but with notion as the backend instead of github issues! I wrote about it here: https://borick.net/articles/my_notion_powered_blog/

                            I think there is something to making it as easy as possible to write and publish. It seems like devs are very prone to setting up their own custom (ish) workflow, and if publishing is outside of that workflow it’ll happen less.

                            1. 1

                              Oh cool! I think I actually saw Chris (or maybe someone else using it?) present the reverse-engineered Notion Go library doing this exact thing at a Notion meetup.

                              Has the markdown generated from Notion been fairly reliable for you?

                              One thing that’s nice with Github’s markdown is that it basically became the de facto standard (commonmark), so Hugo is very happy to consume it and render it properly.

                            1. 1

                              I’ve also recently started taking more notes. My criteria is:

                              • Everything is accessible on all my devices
                              • Easy to use
                              • Markdown-ish
                              • Robust linking (back-linking would be nice)
                              • Reasonably future proof

                              As of the last time I looked, Notion is the only service that I could find that satisfied all of these. Just text files don’t do it for me, because I want to be able to make changes easily on my phone as well as on my computer. Trying to manage stuff with git on mobile was making me not take any notes.

                              I want to be able to keep my notes forever, so my backup plan for if notion goes out of business is to use obsidian to back everything up to markdown files. But so far Notion has been great, they were able to fix a bug I was having in about a week, so that’s nice.

                              1. 3
                                • I have an app for an old client that needs some changes
                                • Write another draft of my next article
                                • Do some errands & prepare for a long weekend to an isolated cabin!
                                1. 2

                                  This is so cool! I just tried this for the issue I’m working on now, and it surfaced a relevant github issue I haven’t seen yet!

                                  I think this really fills a need. I’ve been finding myself using !g on DuckDuckGo a lot, since google’s results are a lot more relevant for dev related searches than DDG’s. This looks like a far more privacy-friendly option, with better results too!

                                  The only feedback I have is to pad the search results to appear in the center of the screen on wide monitors like most other search engines do.

                                  1. 1

                                    Thanks! I’ll work on improving the layout soon. Btw, maybe we should also add the !g bang :-)

                                    1. 1

                                      SLT/INTJ- I always find it interesting how many programmers seem to be INTJ

                                      1. 2

                                        MBTI is not the end-all be-all, but the NTJ ability to see the forest and the trees simultaneously is immensely helpful in programming. You’re constantly moving between differently-sized contexts.

                                        I doubt this is exclusive to NTJ, but there is a reason they are dubbed systems-builders.

                                        Also, an internal survey was conducted at a fairly well known thinktank that found that 95% of surveyed programmers were INTJ. Selection bias and all that, but, wow.

                                        1. 1

                                          If 95% of surveyed programmers are INTJ, then what about the INTP’s? What do they do?

                                      2. 1

                                        FALT. INTJ/ENTJ here.

                                        1. 1

                                          Ditto.