1. 1

    This tutorial was my first stint into C and it is really great. Starting small with 1 project and building that up helped me a lot. Lots of Tutorials or books only show small parts of code that is encapsulated - you don’t get any “ambient” code, so really using 1 bigger project gives some kind of understanding how all the small parts can be put together.

    1. 8

      Ok, now bring back phones with an integrated hardware keyboard like the HTC desire Z.

      1. 4

        My experience is that a fold-out bluetooth keyboard is much more comfortable and better.

        1. 6

          I guess it depends on your use case. If you have a proper table you’re right. If you want to have a purely hand held device for places like a crowded subway an integrated keyboard would be superior, I guess.

          1. 2

            I do tend to use various phones for multiple tasks as well. That being said, bluetooth fold-out keyboards were never a viable option for me (starting with some early folding ones for Palm handhelds etc up to the current Logitech Key-To-Go that isn’t foldabe but portable). My biggest problem with all of them was, that I use mobile devices mainly via commuting and it is just not really usable on your lap without the phone falling out or it being really shaky. A builtin keyboard might not be as comfortable as a separate bluetooth one, but it is fixed on your phone.

            A notable exclusion of the “external keyboards don’t work when commuting” is the ipad Pro with a Smart Keyboard - the magnets are holding it in place as good as a fixed one. (Can’t say anything about the magic keyboard but I assume similar) edit: i actually wrote about my experience using the iPad here - not really using it “fullblown” with a VM and stuff ondevice like you do but rather as a remote shell: https://www.shift-2.com/journal/my-current-setup-learning-and-developing-rust

            1. 1

              Is it possible to use the one you linked on one’s laps? Or would I need a proper desk for that?

          1. 30
            • entr(1) watches files and runs commands when they change.
            • expect allows you to script CLI tools that don’t have scripting interfaces.
            • rofi is like dmenu on steroids.
            • vipe edits data in shell pipelines.
            • strace and ltrace help debugging.
            • autojump jumps to frequently-visited directories by partial name match.
            • rsync semi-intelligently synchronizes files between places (usually over a network).
            • mosh is more robust than SSH over unreliable connections.
            • xcape allows you to bind modifier keys to act as other keys when pressed on their own.
            • …and emacs, because of how flexible the editing core is (partially due to elisp), and how many extensions and enhancements people have made to it.
              • spacemacs is an amazing starter kit that gives you, among other things…
              • helm, which incrementally completes and narrows selections from a list, and can be hooked in to many emacs text prompts
              • recentf (builtin), which remembers which files you’ve recently opened. helm can complete recentf files, meaning that you only have to find the location of a file the first time you open it, and then after than you only need to type part of its name into helm’d recentf and it’ll bring it up for you.
              • magit which has already been mentioned several times as an amazing git interface.
              • avy which allows you to visually select things using a tree of keystrokes (e.g. you have 4 panes open in emacs, use asdf to select, or you have 120 vertical lines, use [a-z] twice to select one).
              • evil gives you vim-like editing.
              • which-key visually displays keybindings so you don’t have to memorize them.
              • slime is an amazing development environment for Common Lisp which has some rare and useful features. I personally am a huge fan of the debugger and inspector (which, from what I have seen, is a relatively rare tool) both.
              • tramp transparently edits files on a remote machine using your local emacs.
              • a client/server architecture (builtin) that enables you to start up emacs once as a daemon and quickly attach windows to it.
              • undo-tree gives you tree-style undo/redo and a visualizer to match.
              • paredit which is mostly-structured editing of s-expressions - the most usable thing approximating a code structure editor that anyone has at the moment…
              • hydra allows you to group together sequences of key-chords and make them somewhat more ergonomic.

            All of these tools have made an impact on my productivity, saved me time, or both. Some of them don’t necessarily save time, even over a long period of use, but instead make you more productive by making your programming experience smoother and more flow-like.

            1. 1

              Great that you mentioned mosh, I do really like that for saving me time by giving me a more stable mobile logon

              1. 1


                Thanks a bunch! I did not know about it. And it is really awesome, especially since I always found traditional undo-redo in Emacs a bit clunky.

              1. 1

                Thanks for sharing this course - That‘s some knowledge that should be spread way more and even earlier!